前一天的时间格式 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