LINUX.ORG.RU

История изменений

Исправление intelfx, (текущая версия) :

А что должно быть в самом демоне, чтобы обеспечить поддержку start/restart/stop средствами systemd?

По большому счёту, ничего. Для systemd даже «делать демона» не нужно — ты можешь обойтись просто процессом, который вечно работает на переднем плане и корректно реагирует на SIGTERM (или любой другой сигнал по твоему выбору, но тогда его нужно будет прописать в юните как KillSignal=).

Единственное (на правах совета) — чтобы systemd правильно понимал, когда твой демон закончил загружаться и начал работать, есть смысл сделать Type=notify, слинковаться с libsystemd и вызвать sd_notify("READY=1") по окончании загрузки. Это нужно по большому счёту для удобства администратора: systemctl start будет ждать окончания загрузки демона перед тем, как возвращать управление, и показывать проблемы в случае их возникновения. Если так не сделать, systemctl будет возвращать управление моментально, даже если демон, условно, упадёт через 500 мс из-за ошибки чтения конфига.

Исправление intelfx, :

А что должно быть в самом демоне, чтобы обеспечить поддержку start/restart/stop средствами systemd?

По большому счёту, ничего. Для systemd даже «делать демона» не нужно — ты можешь обойтись просто процессом, который вечно работает на переднем плане и корректно реагирует на SIGTERM (или любой другой сигнал по твоему выбору, но тогда его нужно будет прописать в юните как KillSignal=).

Единственное — чтобы systemd правильно понимал, когда твой демон закончил загружаться и начал работать, есть смысл сделать Type=notify, слинковаться с libsystemd и вызвать sd_notify("READY=1") по окончании загрузки. Это нужно по большому счёту для удобства администратора: systemctl start будет ждать окончания загрузки демона перед тем, как возвращать управление, и показывать проблемы в случае их возникновения. Если так не сделать, systemctl будет возвращать управление моментально, даже если демон, условно, упадёт через 500 мс из-за ошибки чтения конфига.

Исходная версия intelfx, :

А что должно быть в самом демоне, чтобы обеспечить поддержку start/restart/stop средствами systemd?

По большому счёту, ничего. Для systemd даже «делать демона» не нужно — ты можешь обойтись просто процессом, который вечно работает на переднем плане и корректно реагирует на SIGTERM (или любой другой сигнал по твоему выбору, но тогда его нужно будет прописать в юните как KillSignal=).

Единственное — чтобы systemd правильно понимал, когда твой демон закончил загружаться и начал работать, есть смысл сделать Type=notify, слинковаться с libsystemd и вызвать sd_notify("READY=1") по окончании загрузки. Это просто для удобства администратора: systemctl start будет ждать окончания загрузки демона перед тем, как возвращать управление, и показывать проблемы в случае их возникновения. Если так не сделать, systemctl будет возвращать управление моментально, даже если демон, условно, упадёт через 500 мс из-за ошибки чтения конфига.