10.21 crond定时任务练习

时间:2021-03-02 07:52:05

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