1.玩crond必须以下任务开启
[root@wen ~]# chkconfig --list crond
crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@wen ~]# ps -ef |grep crond|grep -v grep
root 1643 1 0 19:11 ? 00:00:00 crond
2.实战练习:
案例一:每隔2个小时将系统文件/etc/services文件打包备份到/tmp下(每次备份按时间生成不同的备份包)
2.1.命令行测试
2.1.1到目标内容的上级目录打包
[root@wen etc]# tar zcvf /tmp/service.tar.gz ./services
./services
2.1.2要打的包,前面是包名,后面是内容
[root@wen etc]# tar zcvf /tmp/service_$(date +%F-%H).tar.gz ./services
./services
2.2.1在写脚本里
a.写脚本不要乱放,放到/server/scripts/下
b.压缩包文件名添加时间时注意与定时任务执行时间一致且使用%要转义,不然会出错误
cd /etc/ &&\
tar zcf /tmp/service_$(date +\%F-\%H).tar.gz ./services
2.2.2测试脚本例
直接执行脚本没有权限执行
[root@wen ~]# echo 'date +%F ' > /server/scripts/oldboy.sh
[root@wen ~]# /server/scripts/oldboy.sh
-bash: /server/scripts/oldboy.sh: 权限不够
但一般不用+x的方法
[root@wen ~]# chmod +x /server/scripts/oldboy.sh
[root@wen ~]# /server/scripts/oldboy.sh
2017-10-20
[root@wen ~]# chmod -x /server/scripts/oldboy.sh
测试脚本用/bin/sh
[root@wen ~]# /bin/sh /server/scripts/oldboy.sh
2017-10-20
相当于
[root@wen ~]# sh < /server/scripts/oldboy.sh
2017-10-20
2.3测试写好的脚本
[root@wen scripts]# /bin/sh /server/scripts/del_file.sh
2,4.编辑定时任务
a.注释,直接复制粘贴(shift +insert),减少错误
b.注意坑:整点,第一段是00,而默认的*代表每分钟都执行
c.最后加上错误重定向 >/dev/null 2>&1
[root@wen scripts]#crontab -e
#data tar
00 */2 * * * /bin/sh /server/scripts/data_tar.sh >/dev/null 2>&1
2.5.1查看定时任务
[root@wen scripts]# crontab -l
#data tar
00 */2 * * * /bin/sh /server/scripts/data_tar.sh >/dev/null 2>&1
2.5.2查看执行情况日志,查看目录
[root@wen scripts]# tail -f /var/log/cron
案列二:结合案列一,每天0点删除前7天的文件
1.命令行测试,管道前后不用加空格
[root@wen tmp]# find /tmp/ -type f -name "*.tar.gz" -mtime +7|xargs rm -f
2.写脚本
[root@wen scripts]# vim del_file.sh
复制粘贴上面命令行的内容
3.测试脚本
[root@wen scripts]# /bin/sh /server/scripts/del_file.sh
-x 查看脚本执行过程
[root@wen scripts]# /bin/sh -x /server/scripts/del_file.sh
+ xargs rm -f
+ find /tmp/ -type f -name '*.tar.gz' -mtime +7
4.写定时任务,粘贴不要手敲
要写注释,最后要添加错误重定向,tar文件不要使用参数-v打印
[root@wen scripts]# crontab -e
#del_file
00 00 * * * /bin/sh /server/scripts/del_file.sh >/dev/null 2>&1