Запретить завершение работы до завершения сценария 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 для ожидания завершения команды перед перезапуском / выключением или уничтожением других процессов , но это не решило мою проблему, и похоже, что это команды, которые выполняются относительно быстро.

0
задан 13 April 2017 в 15:14
1 ответ

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

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

1
ответ дан 4 December 2019 в 16:38

Теги

Похожие вопросы