Примечание. Я написал статью на Medium, в которой объясняется, как создать службу и как избежать этой конкретной проблемы: создание службы Linux с помощью systemd .
Оригинальный вопрос:
Я использую systemd, чтобы рабочий скрипт всегда работал:
[Unit]
Description=My worker
After=mysqld.service
[Service]
Type=simple
Restart=always
ExecStart=/path/to/script
[Install]
WantedBy=multi-user.target
Хотя перезапуск работает нормально, если сценарий завершается нормально через несколько минут, я заметил, что, если он неоднократно не systemd
запускается при запуске, просто перестану пытаться запустить его:
Jun 14 11:10:31 localhost systemd[1]: test.service: Main process exited, code=exited, status=1/FAILURE
Jun 14 11:10:31 localhost systemd[1]: test.service: Unit entered failed state.
Jun 14 11:10:31 localhost systemd[1]: test.service: Failed with result 'exit-code'.
Jun 14 11:10:31 localhost systemd[1]: test.service: Service hold-off time over, scheduling restart.
Jun 14 11:10:31 localhost systemd[1]: test.service: Start request repeated too quickly.
Jun 14 11:10:31 localhost systemd[1]: Failed to start My worker.
Jun 14 11:10:31 localhost systemd[1]: test.service: Unit entered failed state.
Jun 14 11:10:31 localhost systemd[1]: test.service: Failed with result 'start-limit'.
Точно так же, если мой рабочий скрипт несколько раз завершается сбоем со статусом выхода 255
, systemd
прекращает попытки его перезапустить:
Jun 14 11:25:51 localhost systemd[1]: test.service: Failed with result 'exit-code'.
Jun 14 11:25:51 localhost systemd[1]: test.service: Service hold-off time over, scheduling restart.
Jun 14 11:25:51 localhost systemd[1]: test.service: Start request repeated too quickly.
Jun 14 11:25:51 localhost systemd[1]: Failed to start My worker.
Jun 14 11:25:51 localhost systemd[1]: test.service: Unit entered failed state.
Jun 14 11:25:51 localhost systemd[1]: test.service: Failed with result 'start-limit'.
Есть ли способ , чтобы заставить , systemd
чтобы всегда повторить через несколько секунд?
StartLimitIntervalSec=0
и вуаля.