CronJob 计划任务异常的问题

作者: , 共 789 字

新服务器上遇到一个问题, CronJob 计划任务突然不执行,所有用户的任务都失效,之前定时任务执行时发送的邮件也没了。而且间续发作,准确说,每天白天有 14 小时左右不执行,比如从早上 8 点到晚上 10 点,但有时候是从早上 7 点到晚上 9 点。

一开始以为是时区或者对时任务造成的,但改了之后还是不行。

执行命令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.

今天发现一台新的服务器( ubuntu 18.04 )的计划任务异常,但非常有规律,就是所有任务都比预设时间晚了 8 个小时执行。自然而言猜测是时区设置问题。