Для разных самописных процессов, которые нужно запускать как демон, есть прекрасный инструмент supervisor
. Управление запуском процесса в нём происходит с помощью конфигов предельно простого синтаксиса (и в тоже время покрывающих почти все необходимости) в /etc/supervisor.d/
и команд наподобие:
supervisorctl start myapp supervisorctl stop myapp supervisorctl restart myapp
т.е. интерфейс полностью аналогичный управлению демонами в ОС.
Во многих случаях процесс, который запускают как демон, запускается от непривелигерованного пользователя. И от этого же пользователя работают реальные пользователи/разработчики, которым может понадобится управление демоном. Стандартный способ сделать это — через sudo
:
sudo supervisorctl restart myapp
Но если это виртуальная машина, в которой supervisor
нужен именно для приложений от этого пользователя, то можно сделать и в обход root совсем. Для этого необходимо поправить в /etc/supervisor/supervisord.conf
:
[unix_http_server] file=/var/run/supervisor.sock chmod=0770 chown=someuser:someuser
После этого supervisor
будет управляться из под пользователя. У способа есть недостаток, что теперь supervisor заточен на приложения этого пользователя/группы, но часто это не является препятствием.