У меня есть длительный процесс 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"
но его все равно убивают. Как мне диагностировать и исправить это?
Ваш сценарий был убит из-за побочного эффекта. Сообщение журнала указывает, что убивается сам cron. Когда процесс с дочерними процессами завершается, он отправляет своим дочерним процессам сигнал SIGHUP, заставляя их также выйти. Вот что убивает ваш скрипт на Python.
Если за строкой журнала, которую вы перечисляете, сразу следует строка с надписью init: cron main process ended, respawning
, то вы знаете, что что-то за пределами init / upstart убило его, и он автоматически возродился. Если это сообщение не существует, то cron был убит программой init / upstart, как если бы вы выполнили команду «sudo restart cron» или «sudo stop cron».
Итак, ваш новый исследовательский проект выясняет, что либо убивает, либо завершает работу cron.
Вероятно, ваш процесс слишком долгий и cron блокируется.
Тир запускает ваш процесс в фоновом режиме. Для этого просто добавьте «&» и конец.