计划任务
crond 周期性的任务,定点执行,只能控制这个任务多久运行一次,至于是什么任务与crond无关
场景:
定期备份重要的文件或数据
促销活动,准点开启抢购接口,准点关闭抢购接口
每分钟检测超时订单,超过30分钟未支付的订单进行取消
每隔5分钟上各个电商平台刷取订单信息写入自己公司的系统中
两种使用情况:
系统级别的定时任务,临时文件清理、系统信息采集、日志文件切割
用户级别的定时任务,定时备份数据,同步时间,订单超时自动取消,按时间段统计信息等
图01
分 时 日 月 周
* * * * * 表示每分钟都执行
* 5-7 * * * 表示每天5点到7点中的每分钟都执行
0 5-7 * * * 表示每天5点到7点准点执行
0 2 * * 1,3,5 表示每周的一三五的凌晨两点准点进行
*/5 * * * * 表示每隔5分钟执行一次
crontab -e 编辑定时任务
crontab -l 查看定时任务
crontab -u 指定其他用户
定时任务存放位置,将这个文件备份添加到定期任务中,避免误删
ll /var/spool/cron/USERNAME 的文件,文件名取决于你是什么用户
如果不小心清除了定时任务
查看日志 /var/log/cron拿到所有的任务
grep "CMD" /var/log/cron | awk -F '(' '{print $3}' | sort |uniq 找到执行过的任务
grep "定时任务" /var/log/cron 找到定时任务的执行时间和周期
如果不想让某个用户使用crontab
echo "username" >> /etc/cron.deny
crond编写思路
手动执行命令,然后保留执行成功的结果
编写脚本
脚本需要统一路径
脚本内容复制执行成功的命令
脚本执行的输出信息可以重定向至其他位置保留或写入/dev/null
执行脚本
使用bash命令执行, 防止脚本没有增加执行权限 (使用绝对路径/usr/bin/bash执行)
执行脚本成功后,复制该执行的命令,crontab -e以便写入cron中
编写计划任务
加上必要的注释信息, 人、时间、任务
设定计划任务执行的周期
粘贴执行脚本的命令
调试计划任务
增加任务频率测试
检查环境变量问题
检查crond服务日志
计划任务如何调试
先手动执行没问题。
crontab -e 先每分钟执行一下,确认可以定时执行
最后调整为需要执行的时间,进行执行。
如果使用cron运行脚本,请将脚本执行的结果写入指定日志文件, 观察日志内容是否正常。
命令使用绝对路径, 防止无法找到命令导致定时任务执行产生故障。
通过查看/var/log/cron日志,以便检查我们执行的结果,方便进行调试。