容易混淆
*/1 * * * * date >>/tmp/oldboy.txt
* * * * *date >>/tmp/oldboy.txt
每隔一分钟执行这个命令
1 * * * * date >>/tmp/oldboy.txt
每小时的第一分钟执行这个命令
每天晚上09点到12点运行 systemctl restart network 命令
00 21-23,00 * * * systemctl restart network
每天上午7点到12点每2个小时和晚上22点运行 systemctl restart network 命令
00 7-12/2,22 * * * systemctl restart network
特殊符号
- 表示时间范围
, 表示没有规律的
/:每
/:每隔几分钟( */ * * *)
每天晚上12点 打包备份/etc/目录到/tmp下面
1.命令行测试(测试命令是否ok)
tar zcf /tmp/etc-`date +%F`.tar.gz /etc tar: Removing leading `/' from member names
2.书写脚本并测试脚本(使用sh运行脚本)
[root@yuyingqian ~]# cat /server/scripts/bak-etc.sh #!/bin/bash tar zcf /tmp/etc-`date +%F`.tar.gz /etc [root@yuyingqian ~]# sh /server/scripts/bak-etc.sh tar: Removing leading `/' from member names
3.写入定时任务并检查
1.首先每分钟执行进行测试[root@yuyingqian ~]# tail -f /var/log/cron Apr 28 10:21:01 yuyingqian CROND[8186]: (root) CMD (sh /server/scripts/bak-etc.sh) [root@yuyingqian ~]# ll /tmp total 9984 -rw-r--r-- 1 root root 10217050 Apr 28 10:21 etc-2019-04-28.tar.gz
书写脚本排错
1.先运行里面的命令
2.脚本的执行过程 sh -x 显示执行过程
定时任务箴言(坑)
1.一定要加上注释
2.书写定时任务的时候,尽量使用脚本
3.运行脚本使用sh
4.在定时任务中%有特殊含义,使用时要注释掉
5.在定时任务与脚本中 使用绝对路径
6.在定时任务里面,每个命令或脚本 定向到空或追加文件
预备姿势:/dev/null 定向到黑洞
执行完脚本以后把结果追加到文件* * * * * date +\%F_\%w >>/tmp/time.log 2>&1 * * * * * date +\%F_\%w >/dev/null 2>&1
原因
如果不定项到空或追加到文件
定时任务会以邮件的形式把输出到屏幕的内容发给你故障案例
定时任务没有定向到空或追加到文件的故障
1.系统邮件服务开启
会一直收到邮件2.系统邮件服务关闭(systemctl disable postfix.service)
会把没有收到的邮件临时保存在 /bar/spool/postfix/maildrop7.定时任务运行脚本的时候PATH只识别/usr/bin和/bin下面的命令(PATH记录了命令的路径)
解决:
1.使用命令的绝对路径
- 脚本执行前重新配置PATH(把我们要用的命令所在的路径变得可识别)
source /etc/profile或者. suurce /etc/profile