系统定时任务设置方法
准备工作:
1 确认是否安装定时任务软件: cronie-1.4.11-19.el7.x86_64
2 确认定时任务服务是否启动: systemctl status crond
配置过程:
crontab -l --- 查看系统已有定时任务信息
no crontab for root --- 没有设置定时任务
crontab -e --- 配置系统定时任务信息 (语法检查)
== vim /var/spool/cron/root
编写格式:
* * * * * 任务信息
时间信息 执行命令时间信息: 5个星号表示
第一个星号: 分钟 00 ~ 59
第二个星号: 小时 00 ~ 23 24小时制 2点 凌晨/下午
第三个星号: 日期 1 ~ 31
第四个星号: 月份 1 ~ 12
第五个星号: 星期 1 ~ 7 0 ~ 6
每隔2个小时 0 */2 * * *
*/n : 每隔多久 每隔n分钟 每隔n小时
执行周期是n倍数时间
, : 指定时间完成定时任务
1,3,5,7
- : 指定连续时间范围执行定时任务
00 1-7 * * *
理论: 星期和日期 建议不要同时设置
查看定时任务是否执行:
tail -f /var/log/cron
定时任务设置常见错误
1 定时任务命令信息尽量使用绝对路径 **(定时任务识别/usr/bin 不识别/usr/sbin)**
2 定时任务命令信息最好不要使用特殊符号
定时任务无法识别特殊符号处理方法:
方法一: 将定时任务命令信息放入到脚本文件中
方法二: 将特殊符号信息进行转义
* * * * * echo "`date +\%F_\%T`" >> /tmp/test.txt
总结
用户设置定时任务: crontab /var/log/cron
PS: 日志文件没有记录信息 systemctl status rsyslog.service
尽量让定时任务执行时不要产生输出信息(错误输出)
定时任务操作出错信息会追加到一个邮件文件中
/var/spool/mail/root 消耗磁盘资源 block
关闭邮件服务, 错误信息不会追加到邮件文件中
systemctl status postfix.service --- 让系统发送邮件信息服务
但是会生成大量小文件信息
/var/spool/postfix/maildrop/ 消耗磁盘资源 inode
处理方法:
第一个里程: 邮件服务开启
systemctl start postfix.service
第二个里程: 定时任务执行时错误信息和正确信息放入到系统黑洞中
/dev/null
# crontab -e
* * * * * /usr/bin/cp /oldboy/oldboy.txt /backup &>/dev/null
* * * * * /usr/bin/cp /oldboy/oldboy.txt /backup >/dev/null 2>&1