Systemd сервисы-демоны на RaspberryPi

Категория: Raspberry Pi

Создание и управление сервисными демонами на Raspberry Pi с помощью стандартной утилиты systemd.

Создадим в качестве примера сервис, который инициирует постоянное (persistent) socket соединение на PHP. Конфигурационный файл сервиса-демона создаем в каталоге /etc/systemd/system/sms-api-socket.service (в некоторых руководствах предлагают использовать каталог /lib/systemd/system).

[Unit]
Description=SMS API Socket Service
After=network.target

[Service]
ExecStart=/usr/bin/php modem-connect.php start
WorkingDirectory=/home/pi/apps/sms-socket
StandardOutput=inherit
StandardError=inherit
Restart=always
User=pi

[Install]
WantedBy=multi-user.target

Перечитать конфигурацию сервисов после их редактирования:

sudo systemctl daemon-reload

Команды чтобы запустить/остановить сервис:

sudo systemctl start sms-api-socket.service
sudo systemctl stop sms-api-socket.service
Внимание!

Команды start и stop загружают сервис только на текущий сеанс и не запускают его при каждой загрузке системы!

Для добавления сервисного демона в автозагрузку (запускать всегда при старте системы) примените команду enable:

sudo systemctl enable sms-api-socket.service
sudo systemctl disable sms-api-socket.service

* Команды systemctl enable и systemctl disable просто создают символические ссылки.

Еще пример сервиса, который запускает встроенный в PHP Built-in веб-сервер:

[Unit]
Description=SMS API Service
After=network.target

[Service]
ExecStart=/usr/bin/php -S 0.0.0.0:8080 -t /home/pi/apps/sms-api >> /var/log/sms-api.log 2>&1
PIDFile=/var/run/sms-api.pid
Type=simple
KillMode=process

[Install]
WantedBy=multi-user.target
Примечание

По привычке я хотел поставить upstart на Raspberry Pi, но заметил, что при установке удаляются пакеты связанные с systemd. Я вернул все обратно, но оставлю список удаленных systemd пакетов, может кому-то тоже придется реанимировать systemd:

При установке upstart - удаляются следующие пакеты:

gvfs gvfs-backends gvfs-daemons gvfs-fuse libpam-systemd packagekit pi-package pi-package-session policykit-1 raspberrypi-ui-mods systemd systemd-sysv udisks2

И устанавливаются следующие пакеты:

cgmanager consolekit libcgmanager0 libck-connector0 libjson0 libpam-ck-connector systemd-shim upstart

#service, #daemon, #systemd, #systemctl