Linux运维学习笔记 4.10

计划任务

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日志,以便检查我们执行的结果,方便进行调试。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容