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

Solaris SMF: убить с помощью настраиваемого сигнала, получить PID или предотвратить убийство детей

В XML службы Solaris

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

<exec_method type="method" name="stop" exec=":kill" timeout_seconds="60" />

Это прекрасно работает, за исключением того факта, что он также убивает дочерние процессы, которые в основном просто умирают после SIGTERM. Любой из них будет работать

Я бы предпочел не создавать отдельный скрипт, который должен выяснить pid. Я сделаю это, если понадобится. Я бы предпочел получить его из переменной окружения или использовать встроенную команду SMF.

exec=":kill -USR1" делает свое дело. Без SIG.

Я искал это при определении method="refresh". Джперкин меня прямо наставил своим примером exec=":kill -HUP", тогда как на SmartOS с использованием exec=":kill -SIGHUP" привело к "/sbin/sh[1]: exec: :kill: not found".

Это связано с тем, что и родитель, и ребенок имеют один и тот же контракт («мужской контракт» для получения дополнительной информации).

Используйте «ctrun» («man ctrun» для получения дополнительной информации), это создаст дочерний процесс с другим контрактом. Это предотвратит убийство ребенка, когда убивают родителя.

Уверен, ты можешь просто сделать exec="kill -SIGUSR1".