LINUX.ORG.RU
ФорумAdmin

systemd не стопится сервис

 


0

2

всем привет

Написал юнит под свой скрипт.
Подскажите пожалуйста, не стопится сервис, ошибок никаких, делаю kill пида

[Unit]
Description=yii
After=network.target

[Service]
Type=simple
User=root
ExecStart=/data/scripts/yii msg
ExecStop=/bin/kill $MAINPID


[Install]
WantedBy=multi-user.target

лог

● yii.service - yii
   Loaded: loaded (/etc/systemd/system/yii.service; disabled; vendor preset: disabled)
   Active: failed (Result: signal) since Пт 2016-02-19 16:19:02 MSK; 13min ago
  Process: 7999 ExecStop=/bin/kill $MAINPID (code=exited, status=0/SUCCESS)
  Process: 7976 ExecStart=/data/scripts/yii msg (code=killed, signal=KILL)
 Main PID: 7976 (code=killed, signal=KILL)

фев 19 16:18:39 DEV0 systemd[1]: Started yii .
фев 19 16:18:39 DEV0 systemd[1]: Starting yii ...
фев 19 16:18:54 DEV0 systemd[1]: Stopping yii ...
фев 19 16:19:02 DEV0 systemd[1]: yii.service: main process exited, code=killed, status=9/KILL
фев 19 16:19:02 DEV0 systemd[1]: Stopped yii .
фев 19 16:19:02 DEV0 systemd[1]: Unit yii.service entered failed state.
фев 19 16:19:02 DEV0 systemd[1]: yii.service failed.

Что я делаю не так?


ExecStop=/bin/kill $MAINPID

А не лучше снабить этот yii нормальной остановкой?

Deleted ()

похоже, твой скрипт не умирает при посылке ему дефолтового сигнала, по крайней мере при посылке тому pid'у, который видит systemd

anonymous ()

Не нужно в ExecStop= писать kill. systemd сам умеет убивать процессы. Если не указать ExecStop=, то именно это и произойдёт.

intelfx ★★★★★ ()

systemd - corrypted by design

anonymous ()
Ответ на: комментарий от anonymous

спасибо ) так и есть)

[Unit]
Description=yii
After=network.target

[Service]
Type=simple
User=root
ExecStart=/data/scripts/yii msg
ExecStop=/bin/kill -KILL $MAINPID


[Install]
WantedBy=multi-user.target

carter ()
Ответ на: комментарий от carter

Это делается не так.

KillSignal=SIGKILL

И, опять же, никаких ExecStop=.

Но лучше попробуй для начала дописать KillMode=control-group.

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от carter

-KILL нужно использовать только в аварийном случае, а для нормального завершения программы предназначен -TERM

anonymous ()
Ответ на: комментарий от anonymous

к сожалению таким образом он не завершает процесс

carter ()
Ответ на: комментарий от carter

я это уже понял, поэтому и написал, что так как ты делаешь — неправильно, а раз правильный способ не работает, то надо исправить ответную часть, т.е. научить свой скрипт завершаться по -TERM

иначе, если багу закрывать костылем, то можешь получить новые неожиданные баги

anonymous ()
Ответ на: комментарий от anonymous

ну скрипт написан кем то и когда..там php большой и ужасный... без правки скрипта никак?

carter ()
Ответ на: комментарий от carter

ну откуда же я знаю, я скрипта не видел, но, вероятно, да

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.