如何阻止长时间运行的 cron 进程被终止

如何阻止长时间运行的 cron 进程被终止

我有一个长期运行的 cron 进程,运行 Python 脚本,该进程似乎被随机终止。dmesg我看到:

[230568.077358] init: cron main process (890) killed by TERM signal
[237517.974422] init: cron main process (19598) killed by TERM signal

我该如何阻止这种情况发生?我尝试通过较低的 nice 值运行该进程,例如

* * * * * nice -n 10 bash -c "/usr/local/myproject/myscript.py"

但它还是被杀死了。我该如何诊断和修复这个问题?

答案1

您的脚本被终止是次要影响。日志消息表明 cron 本身正在被终止。当一个带有子进程的进程被终止时,它会向其子进程发送 SIGHUP,导致它们也退出。这就是终止您的 python 脚本的原因。

如果您列出的日志行后面紧跟着一行init: cron main process ended, respawning,则说明 init/upstart 之外的某些东西杀死了它,并且它自动重生。如果该消息不存在,则 cron 被 init/upstart 杀死,就像您运行“sudo restart cron”或“sudo stop cron”一样。

因此,您的新研究项目是找出终止或关闭 cron 的原因。

答案2

可能是您的进程运行时间太长并且 cron 阻止了它。

Tyr 在后台运行您的进程。要做到这一点,只需在末尾添加一个“&”。

相关内容