LINUX.ORG.RU

Добиться от systemd, чтобы он отписался что процесс остановлен когда он реально остановлен

 


0

1

Привет

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

$ service snmpd stop
Stopping snmpd (via systemctl):    OK  

$ net-snmp-create-v3-user ...
Apparently at least one snmpd demon is already running.
You must stop them in order to use this command.


Как заставить systemd завершать команду только тогда, когда snmpd реально остановлен?

Править service файл - не вариант, так как не всегда это уместно. Надеюсь на какой-то простой параметр командной строки.

Спасибо.

★★★★★

systemd рапортует что процесс остановлен раньше, чем этот процесс реально остановлен

Значит, юнит кривой, пиши багрепорт мейнтейнеру

anonymous
()

Добавить команду, которая должна запуститься после, в ExecStop=

Для этого не надо править весь service файл, достаточно сделать systemctl edit $servicename и вписать всё нужное туда.

anonymous
()

systemd так не делает. Проблема либо в обёртке, которой ты пользуешься, либо в кривом юните.

anonymous
()

какое-то странное поведение

ты лучше systemctl status snmpd покажи после выключения, и ps заодно

alpha ★★★★★
()

Править service файл - не вариант, так как не всегда это уместно.

Ну а что ты ещё предложишь делать, если в .service-файле явно написано «не ждать остановки»?

Покажи содержимое юнита.

intelfx ★★★★★
()
Ответ на: комментарий от intelfx
$ cat ./systemd/system/multi-user.target.wants/snmpd.service
[Unit]
Description=Simple Network Management Protocol (SNMP) Daemon.
After=syslog.target network.target

[Service]
Type=notify
Environment=OPTIONS="-LS0-6d"
EnvironmentFile=-/etc/sysconfig/snmpd
ExecStart=/usr/sbin/snmpd $OPTIONS -f
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
RestartSec=3s

[Install]
WantedBy=multi-user.target
Kroz ★★★★★
() автор топика
Ответ на: комментарий от Kroz

Интересно. Моё предположение неверно. Подпроцессы smpd запускает?

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

А, стой! Я, помнится, где-то читал обсуждение, по итогам которого service хотели заставить вызывать systemctl в неблокирующем режиме (с параметром --no-block). Попробуй вместо service вызывать systemctl явно.

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

Я тут посмотрел /etc/init.d/snmpd... Оно по сути тоже не следит, остановился ли сервис на самом деле, просто отсылает kill и всё.

Решил проблему добавлением ожидающей конструкции.

В любом случае спасибо за ответ.

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