新服务器上遇到一个问题, CronJob 计划任务突然不执行,所有用户的任务都失效,之前定时任务执行时发送的邮件也没了。而且间续发作,准确说,每天白天有 14 小时左右不执行,比如从早上 8 点到晚上 10 点,但有时候是从早上 7 点到晚上 9 点。
一开始以为是时区或者对时任务造成的,但改了之后还是不行。当任务不执行之后,停止或重启cron service
也不起作用。
执行命令systemctl status cron
发现一个有趣的问题,它的结果类似于下面这个:
● cron.service - Regular background program processing daemon
Loaded: loaded (/lib/systemd/system/cron.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2019-07-24 09:34:46 CST; 23h ago
Docs: man:cron(8)
Main PID: 1336 (cron)
Tasks: 11058 (limit: 11059)
CGroup: /system.slice/cron.service
└─1336 /usr/sbin/cron -f
我们发现Tasks
后面的数据已经接近于 11059 的限制。然后我们检查其他的服务器,任务数都是个位数。
同时我们发现在CGroup
下面有几个执行了好几天没有退出的僵尸任务。手工强行杀死这几个僵尸任务,再次检查systemctl status cron
,发现Tasks
的个数已经是 1 ,而且计划任务开始正常执行了!
还有检查 cron log :
sudo grep -i cron /var/log/syslog*
Q. E. D.