12-定时任务
1.什么是定时任务
指定某个日志或时间周期性的执行命令:ps -ef | grep crond
2.什么是crond:blog.driverzeng.com
crond就是计划任务,类似我们平时生活中的闹钟,定点执行行为
3.为什么要使用定时任务
4.使用场景
1)数据备份
2)服务器巡检
1 #!/bin/bash
2 mem_total=`free -m | awk 'NR==2 {print $2}'`
3 mem_used=`free -m | awk 'NR==2 {print $3}'`
4 mem_free=`free -m | awk 'NR==2 {print $4}'`
5 mem_b=`free -m | awk 'NR==2 begin{printf "%.2f%\n",($3/$2)*100n}'`
6
7 echo '---- mem check info ----'
8 echo "总内存:$mem_total"
9 echo "已使用:$mem_used"
10 echo "还剩余:$mem_free"
11 echo "使用率:$mem_b"
sh mem_check.sh
3)日志切割
cp /var/log/messages /var/log/messages-$(date +%Y%m%d -d '-1 day'):每天晚上12点执行
5.测试时间同步任务
1)安装ntpdate命令:yum install -y ntpd
2)测试时间同步命令:ntpdate ntp.aliyun.com
3)确认命令所在任务:which ntpdate
4)配置定时任务:crontab -e
#每5分钟执行一次hello world输入到文件
*/5 * * * * ntpdate ntp.aliyun.com
5)查看定时任务:crontab -l
案例:
需求:
1.每天备份文件名要求格式:2018-02-20_hostname_etc.tar.gz
2.存放备份内容的目录要求只保留3天的数据
3.在执行计划任务时,不要输出任务信息
编写脚本
vim bei.sh
#!/bin/bash
mkdir -p /backup
tar zcf /backup/2022-05-01_hostname_etc.tar.gz /etc
find /backup/ -type f -mtime +3 | xargs rm -rf
将脚本写入定时任务
crontab -e
#每5分钟执行一次时间同步
*/5 * * * * ntpdate ntp.aliyun.com
#每天3:50执行备份文件脚本
50 3 * * * /bin/bash ~/bei.sh
总结:
1.定时任务规则配置一定要有注释
2.定时任务里面尽量使用脚本
3.运行脚本习惯性使用绝对路径
4.脚本执行结果或者命令执行结果尽量有用的定义到指定的日志,没用的定义到空
5.避免不必要的输出
6.打包命令尽量使用绝对路径
7.系统的环境变量配置:vim /etc/profile(或:vim /etc/profile.d/bei.sh 或echo "export PATH=$PATH:/backup" >> /etc/profile ——>source /etc/profile)