Предполагая, что у вашего демона есть какой-то способ непрерывной работы (какой-то цикл обработки событий, витая и т. Д.), Вы можете попробовать использовать upstart
.
Вот пример конфигурации upstart для гипотетической службы Python:
description "My service"
author "Some Dude <blah@foo.com>"
start on runlevel [234]
stop on runlevel [0156]
chdir /some/dir
exec /some/dir/script.py
respawn
Если вы сохраните это как script.conf в /etc/init
, вы просто выполните одноразовый
$ sudo initctl reload-configuration
$ sudo start script
Вы можете остановить это с помощью stop script
. Вышеприведенный Conf-upst говорит, что нужно запустить эту службу при перезагрузке, а также перезапустить ее, если она умрет.
Что касается обработки сигналов - ваш процесс должен естественно реагировать на SIGTERM
. По умолчанию это должно выполняться, если вы специально не установили свой собственный обработчик сигналов.