Назад | Перейти на главную страницу

Запретить завершение работы до завершения сценария ExecStop

У меня есть сценарий, который запускается бесконечно при запуске, и другой сценарий, который безопасно его завершает. Второй сценарий требует подключения к удаленной базе данных. Оба они объявлены в той же службе, что и ExecStart и ExecStop соответственно. Мне нужен второй скрипт, чтобы заблокировать выключение / перезагрузку до его завершения. В настоящее время первый сценарий работает нормально, но выполнение второго сценария преждевременно завершается. Вот что у меня есть на данный момент:

[Unit]
DefaultDependencies=no
Wants=network-online.target
After=network.target network-online.target
Before=reboot.target shutdown.target halt.target

[Service]
Type=oneshot
RemainAfterExit=true
User=test
ExecStart=/usr/bin/python /home/test/test.py
ExecStop=/usr/bin/sh /home/test/test
KillMode=none

[Install]
WantedBy=multi-user.target

Я пробовал использовать следующее: systemd ждать завершения команды перед перезапуском / выключением или убийством других процессов но это не решило мою проблему, и похоже, что его команды выполняются относительно быстро.

Я добавил следующее, и это сработало:

TimeoutSec=300min

Моя окончательная конфигурация:

[Unit]
DefaultDependencies=no
Wants=network-online.target
After=network.target network-online.target
Before=reboot.target shutdown.target halt.target

[Service]
Type=simple
RemainAfterExit=true
User=test
ExecStart=/usr/bin/python /home/test/test.py
ExecStop=/usr/bin/sh /home/test/test
KillMode=none
TimeoutSec=300min

[Install]
WantedBy=multi-user.target

Заметка: Я специально не делал TimeoutSec=infinity