linux 脚本常用


前一天的时间格式   date -d '1 day ago' '+%Y%m%d'  

 find ./ -mindepth 3 -maxdepth 3  -mtime +60  -type d 

查找过滤文件      find /app/SFTP/CMB_WJCS/MI* |grep $(date -d '1 day ago' '+%Y%m%d') 

1、dirname命令去除文件名中的非目录部分,删除最后一个“\”后面的路径,显示父目录。 语法:dirname [选项] 参数
2、basename命令用于打印目录或者文件的基本名称,显示最后的目录名或文件名。语法:basename [选项] 参数

 

#/bin/bash  (liberty启动脚本)

for i in $(cat /home/wasadmin/instance.txt)
do 
        echo $i
/app/WebSphere/AppServer/bin/server start $i
done

oracle 启动脚本

export ORACLE_SID=orcl
$ORACLE_HOME/bin/sqlplus / as sysdba <<EOF
startup;
exit;
EOF
export ORACLE_SID=orcl11
$ORACLE_HOME/bin/sqlplus / as sysdba <<EOF
startup;
exit;
EOF
$ORACLE_HOME/bin/lsnrctl start

#!/bin/bash  (自动解密脚本)
#find /app/SFTP/CMB_WJCS/MI* -newermt `date -d" 1 day ago" +"%F"` -type f >/tmp/wls
find /app/SFTP/CMB_WJCS/MI* -mmin -$(expr `date +%H` \* 60 + `date +%M` + 1440 \* 1) -a -mmin +$(expr `date +%H` \* 60 + `date +%M`) -type f >/tmp/wls
wls=/app/SFTP/CMB_WJCS/Decrypt
mkdir -p /app/SFTP/CMB_WJCS/Decrypt/`date -d"1 day ago" +%F`
cat /tmp/wls |while read line 
do
 dir_name=`dirname $line`
 file_name=`basename $line`
 gpg2 -d --batch --passphrase Password1 -o /app/SFTP/CMB_WJCS/Decrypt/`date -d"1 day ago" +%F`/$file_name /app/SFTP/CMB_WJCS/$file_name
#gpg2 -d --batch --passphrase Password1 -o /app/SFTP/jiemi/$file_name /app/SFTP/Cmb_metlife/$file_name
 sleep 1        
done

linux定时任务 -crontab

crontab命令选项
-e                      #编辑定时任务
-l                      #查看定时任务
-r                      #删除定时任务
-u                      #指定其他用户


crontab的时间编写规范


00 02 * * * ls          #每天的凌晨2点整执行
00 02 1 * * ls          #每月的1日的凌晨2点整执行
00 02 14 2 * ls         #每年的2月14日凌晨2点执行
00 02 * * 7 ls          #每周天的凌晨2点整执行
00 02 * 6 5 ls          #每年的6月周五凌晨2点执行
00 02 14 * 7 ls         #每月14日或每周日的凌晨2点都执行
00 02 14 2 7 ls         #每年的2月14日或每年2月的周天的凌晨2点执行   
*/10  02 * * * ls       #每天凌晨2点,每隔10分钟执行一次
* * * * *  ls           #每分钟都执行
00 00 14 2 *  ls        #每年2月14日的凌晨执行命令 
*/5 * * * *  ls         #每隔5分钟执行一次
00 02 * 1,5,8 * ls      #每年的1月5月8月凌晨2点执行
00 02 1-8 * *  ls       #每月1号到8号凌晨2点执行
0 21 * * * ls           #每天晚上21:00执行
45 4 1,10,22 * * ls     #每月的1,10,22号的4:45执行
45 4 1-10 * * ls        #每月的1到10号的4:45执行
3,15 8-11 */2 * * ls    #每隔两天的上午8点到11点的第3和第15分钟执行
0 23-7/1 * * * ls       #晚上11点到早上7点之间,每隔一个小时执行
15 21 * * 1-5 ls        #周一到周五每天晚上21:15执行

30.6)计划任务实践示例
示例1:使用root用户每2分钟执行一次时间同步

#需提前安装软件包
[root@centos7 ~]# yum install -y ntpdate

#先在Linux系统上查看命令是否正确
[root@centos7 ~]# ntpdate ntp.aliyun.com
26 Jul 15:20:49 ntpdate[19706]: step time server 203.107.6.88 offset -1.696419 sec

#配置定时任务
#编辑定时任务
[root@centos7 ~]# crontab -e -u root

#每2分钟执行一次时间同步 by wxg At 2019.07.26
*/2 * * * * /usr/sbin/ntpdate ntp.aliyun.com &>/dev/null

#查看定时任务
[root@centos7 ~]# crontab -l -u root
#每2分钟执行一次时间同步 by wxg At 2019.07.26
*/2 * * * * /usr/sbin/ntpdate ntp.aliyun.com &>/dev/null

配置开机自启脚本

 1.新建脚本文件-- test.sh

2. test.sh文件移动至 /etc/init.d/ 下面,并赋权

chmod +x  /etc/init.d/test.sh

chmod 755 /etc/init.d/test.sh

3.编辑rc.local文件    vi /etc/rc.local

 加入以下内容 sh /etc/init.d/test.sh >test.log

4.赋予rc.local权限 -- 

chmod +x /etc/rc.local

chmod 755 /etc/rc.local

 

 

#!/bin/sh  (kill匹配进程)

ID=`ps -ef | grep "tomcat" | grep -v "catalina.sh" | grep -v "grep" | awk '{print $2}'`
echo $ID
echo "---------------"
for id in $ID
do
kill -9 $id
echo "killed $id"
done
echo "---------------"

 查看进程状态

#!/bin/sh  (查看进程状态)

ID=`ps -ef|grep jhgj-server-V1.0.2.jar |grep -v grep| awk '{print $2}'`


if  [ $ID ]; then
  echo "---------------"
  echo "executor is runing id : $ID"
  echo "进程所属用户: `ps aux|grep $ID|grep  -v grep |awk '{print $1}'`"
  echo "CPU占用率:`ps aux|grep $ID|grep  -v grep |awk '{print $3}'`%"
  echo "内存占用率:`ps aux|grep $ID|grep  -v grep |awk '{print $4}'`%"
  echo "进程开始运行的时刻:`ps aux|grep $ID|grep  -v grep |awk '{print $9}'`"
  echo "进程运行的时间:`ps aux|grep $ID|grep  -v grep |awk '{print $10}'`"
  echo "进程状态:`ps aux|grep $ID|grep  -v grep |awk '{print $8}'`"
  echo "进程虚拟内存:`ps aux|grep $ID|grep  -v grep |awk '{print $5}'`"
  echo "进程共享内存:`ps aux|grep $ID|grep  -v grep |awk '{print $6}'`"
  echo "---------------"
else
  echo "---------------"
  echo "executor in stoping!!"
  echo "---------------"
fi
 

 #! /bin/bash (根据PID过滤进程所有信息)
read -p "请输入要查询的PID: " P
n=`ps -aux| awk '$2~/^'$P'$/{print $11}'|wc -l`
if [ $n -eq 0 ];then
 echo "该PID不存在!!"
 exit
fi
echo "--------------------------------"
echo "进程PID: $P"
echo "进程命令:`ps -aux| awk '$2~/^'$P'$/{print $11}'`"
echo "进程所属用户: `ps -aux| awk '$2~/^'$P'$/{print $1}'`"
echo "CPU占用率:`ps -aux| awk '$2~/^'$P'$/{print $3}'`%"
echo "内存占用率:`ps -aux| awk '$2~/^'$P'$/{print $4}'`%"
echo "进程开始运行的时刻:`ps -aux| awk '$2~/^'$P'$/{print $9}'`"
echo "进程运行的时间:`ps -aux| awk '$2~/^'$P'$/{print $10}'`"
echo "进程状态:`ps -aux| awk '$2~/^'$P'$/{print $8}'`"
echo "进程虚拟内存:`ps -aux| awk '$2~/^'$P'$/{print $5}'`"
echo "进程共享内存:`ps -aux| awk '$2~/^'$P'$/{print $6}'`"
echo "--------------------------------"

 #! /bin/bash   对账户的密码的一些加固
read -p  "设置密码最多可多少天不修改:" A
read -p  "设置密码修改之间最小的天数:" B
read -p  "设置密码最短的长度:" C
read -p  "设置密码失效前多少天通知用户:" D
sed -i '/^PASS_MAX_DAYS/c\PASS_MAX_DAYS   '$A'' /etc/login.defs
sed -i '/^PASS_MIN_DAYS/c\PASS_MIN_DAYS   '$B'' /etc/login.defs
sed -i '/^PASS_MIN_LEN/c\PASS_MIN_LEN     '$C'' /etc/login.defs
sed -i '/^PASS_WARN_AGE/c\PASS_WARN_AGE    '$D'' /etc/login.defs
 
echo "已对密码进行加固,新用户不得和旧密码相同,且新密码必须同时包含数字、小写字母,大写字母!!"
sed -i '/pam_pwquality.so/c\password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=  difok=1 minlen=8 ucredit=-1 lcredit=-1 dcredit=-1' /etc/pam.d/system-auth
 
echo "已对密码进行加固,如果输入错误密码超过3次,则锁定账户!!"
n=`cat /etc/pam.d/sshd | grep "auth required pam_tally2.so "|wc -l`
if [ $n -eq 0 ];then
sed -i '/%PAM-1.0/a\auth required pam_tally2.so deny=3 unlock_time=150 even_deny_root root_unlock_time300' /etc/pam.d/sshd
fi
 
echo  "已设置禁止root用户远程登录!!"
sed -i '/PermitRootLogin/c\PermitRootLogin no'  /etc/ssh/sshd_config
 
read -p "设置历史命令保存条数:" E
read -p "设置账户自动注销时间:" F
sed -i '/^HISTSIZE/c\HISTSIZE='$E'' /etc/profile
sed -i '/^HISTSIZE/a\TMOUT='$F'' /etc/profile
 
echo "已设置只允许wheel组的用户可以使用su命令切换到root用户!"
sed -i '/pam_wheel.so use_uid/c\auth            required        pam_wheel.so use_uid ' /etc/pam.d/su
n=`cat /etc/login.defs | grep SU_WHEEL_ONLY | wc -l`
if [ $n -eq 0 ];then
echo SU_WHEEL_ONLY yes >> /etc/login.defs
fi
 
echo "即将对系统中的账户进行检查...."
echo "系统中有登录权限的用户有:"
awk -F: '($7=="/bin/bash"){print $1}' /etc/passwd
echo "********************************************"
echo "系统中UID=0的用户有:"
awk -F: '($3=="0"){print $1}' /etc/passwd
echo "********************************************"
N=`awk -F: '($2==""){print $1}' /etc/shadow|wc -l`
echo "系统中空密码用户有:$N"
if [ $N -eq 0 ];then
 echo "恭喜你,系统中无空密码用户!!"
 echo "********************************************"
else
 i=1
 while [ $N -gt 0 ]
 do
    None=`awk -F: '($2==""){print $1}' /etc/shadow|awk 'NR=='$i'{print}'`
    echo "------------------------"
    echo $None
    echo "必须为空用户设置密码!!"
    passwd $None
    let N--
 done
 M=`awk -F: '($2==""){print $1}' /etc/shadow|wc -l`
 if [ $M -eq 0 ];then
  echo "恭喜,系统中已经没有空密码用户了!"
 else
echo "系统中还存在空密码用户:$M"
 fi
fi
 
echo "即将对系统中重要文件进行锁定,锁定后将无法添加删除用户和组"
read -p "警告:此脚本运行后将无法添加删除用户和组!!确定输入Y,取消输入N;Y/N:" i
case $i in
      [Y,y])
            chattr +i /etc/passwd
            chattr +i /etc/shadow
            chattr +i /etc/group
            chattr +i /etc/gshadow
            echo "锁定成功!"
;;
      [N,n])
            chattr -i /etc/passwd
            chattr -i /etc/shadow
            chattr -i /etc/group
            chattr -i /etc/gshadow
            echo "取消锁定成功!!"
;;
       *)
            echo "请输入Y/y or  N/n"
esac

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值