Linux---定时任务
1.定时任务的作用
定时任务作用:
1.定时备份(重要的系统文件 系统数据 业务文件 业务数据等)
什么时间备份(业务低谷期)
视频: 8-12点
小说: 12点-凌晨1点
公司官网: 上午10点下午6点
购物: 凌晨3-5点
游戏: 早上8-9点左右
为什么低谷期做备份?
因为备份需要tar打包压缩,打包压缩占用CPU负载
2.定时数据统计
3.定时辅助进程运行
4.其他作用
2.定时任务的配置文件
分为两个配置文件:
第一个配置文件: 系统配置文件
/etc/crontab
第二个配置文件: 用户配置文件
crontab -e 编辑---->实际写入到/var/spool/cron/root
crontab -l 列出当前所有的定时任务
日志文件:
/var/log/cron
3.定时任务的格式
语法格式:
分时日月周 用户名(root) 可执行命令
* * * * * user-name command to be executed
第一颗星: 分钟 0 - 59 0表示整点
第二颗星: 小时 0 - 23 0表示凌晨12点
第三颗星: 日 1 - 31
第四颗星: 月 1 - 12
第五颗星: 周 0 - 6 0和7表示 星期天
4.定时任务小案例
案例1:
每天的上午8点30分,来学校上车(go to school)
30 08 * * * root echo go to school
案例2: 笔试题
每天晚上12点准时,回家自己开车(go to bed)
00 00 * * * root echo go to bed
案例3: 每分钟输出自己的姓名
* * * * * root echo lll
案例4: 每个小时的第5分钟执行echo hehe
05 * * * * root echo hehe
案例5: 早上7点到上午11点执行命令
00 7-11 * * * root echo ..
案例5: 早上7点 9点 下午13点-15点执行
00 7,9,13-15 * * * root echo ..
案例6:间隔5分钟时间同步
*/5 * * * * root ntpdate ntp1.aliyun.com
案例7:凌晨12点查找7天前的文件删除,或者备份
00 00 * * * root find /data -type f -mtime +7|xargs tar zcvf /opt/etc.tar.gz
00 01 * * * root find /data -type f -mtime +7|xargs rm
案例8: 校验MD5值保证文件被篡改时第一时间发现并恢复业务
find /data -type f |xargs md5sum >/opt/md5.log
*/5 * * * * root md5sum -c /opt/md5.log >/opt/result.txt
案例9:每分钟将自己的名字追加写入家目录中的test.txt文件中
* * * * * root echo lzh >> /root/test.txt
案例10:每间隔5分钟执行一次时间同步
*/5 * * * * root ntpdate ntp1.aliyun.com
案例11:每天凌晨5点 将/etc/hosts /etc/passwd 打包到/opt/下以IP地址和当天时间命名
[root@centos ~]#tar zcvf /opt/`hostname -I|awk '{print $1}'`_`date +%F`.tar.gz /etc/hosts /etc/passwd
* * * * * root tar zcvf /opt/`hostname -I|awk '{print $1}'`_`date +\%F`.tar.gz /etc/hosts /etc/passwd
案例12:每天凌晨12点 查找/data目录下7天前的文件并删除(7天前的文件通过修改时间来创建)
00 00 * * * root find /data/ -type f -mtime +7 -name "*.log"|xargs rm &>/dev/nul
5.使用脚本进行定时任务案例
1.给定时任务添加注释
2.两条命令以上使用脚本的方式运行
案例: 创建IP地址+时间命名的目录
将/etc/hosts /etc/passwd 打包放在上面的目录中
查找目录中大于7天前的文件删除
[root@centos ~]#mkdir /server/scripts -p 创建一个专门放脚本的地方
[root@centos ~]#ifconfig eth0|awk 'NR==2{print $2}'
10.0.0.200
[root@centos ~]#IP=`ifconfig eth0|awk 'NR==2{print $2}'`
[root@centos ~]#echo $IP
10.0.0.200
[root@centos ~]#TIME=`date +%F`
[root@centos ~]#echo $TIME
2023-03-15
[root@centos ~]#echo $IP_$TIME
2023-03-15
[root@centos ~]#echo ${IP}_$TIME
10.0.0.200_2023-03-15
[root@centos ~]#mkdir ${IP}_$TIME
[root@centos ~]#ll
total 8
drwxr-xr-x. 2 root root 6 Mar 15 09:23 10.0.0.200_2023-03-15
最终结果:
[root@centos /server/scripts]#cat backup.sh
#创建/opt下IP地址+时间命名的目录
IP=`ifconfig eth0|awk 'NR==2{print $2}'`
TIME=`date +%F`
mkdir -p /opt/${IP}_$TIME
#将/etc/hosts /etc/passwd 打包放在上面的目录中
tar zcf /opt/${IP}_$TIME/${TIME}.tar.gz /etc/hosts /etc/passwd &>/dev/null
#查找目录中大于7天前的文件删除
find /opt/${IP}_$TIME/ -type f -mtime +7|xargs rm &>/dev/null
注意:
写入到定时任务:
1.先按照每分钟进行测试 然后修改回固定的时间
# 00 00 * * * root sh /server/scripts/backup.sh
3.在定时任务不识别% 需要加转义\% 或者将命令写入脚本
4.执行脚本尽量前面加上sh或者bash
/server/scripts/backup.sh 需要给脚本执行权限
sh /server/scripts/backup.sh 不需要脚本执行权限
5.执行脚本的结果,定时任务的结果定向到空或者文件中
在执行每条定时任务后 系统会自动给用户发送邮件信息
/var/spool/mail/root