systemd service — способ управления службами на Linux сервере, применяющийся в большинстве современных дистрибутивов. systemd позволяет останавливать и запускать службы и следить за их работой. Таким образом легко контролировать также собственные демоны, которые, например, должны запускаться автоматически после перезагрузки сервера.
systemd service и управление службами
SystemD работает на серверах под управлением Debian 8, CentOS 7, Ubuntu 15.04, Fedora 15 и дитрибутивов старших версий, чем приведенные.
Какая именно система инициализации применяется в качестве основной можно выяснить так
file /sbin/init
/sbin/init: symbolic link to /lib/systemd/systemd
В выводе systemd и именно эта система используется — другие варианты это upstart и SysV
systemd современнее всех и обладает обратной совместимостью, но все новые сервисы (в том числе свои) на современной машине лучше всего запускать именно через Systemd service.
systemd оперирует понятием «unit», самый распространенный тип среди них — service.
Управление сервисами производится командой systemctl
Пример управления сервисом с systemctl
Устанавливаем Nginx на Ubuntu сервере используя пакетный менеджер apt
apt install nginx
Вместе с самим пакетом будет добавлен сервис nginx.service
Запустим его и добавим в автозагрузку
systemctl start nginx.service
systemctl enable nginx.service
Если последнюю команду не выполнить после старта системы сервис не запустится автоматически. С enable он будет стартовать каждый раз при загрузке. Также есть противоположная опция disable, позволяющая убрать из что-либо автозагрузки. Для Nginx это, вероятнее всего, не понадобится.
Остановка службы
systemctl stop nginx.service
Рестарт
systemctl restart nginx.service
Команда для перечитывания конфигурационных файлов при сохранении процесса (аналог nginx -s reload)
systemctl reload nginx.service
Если возникают какие-то ошибки можно посмотреть логи службы
journalctl -b -u nginx.service
Ключ -u указывает юнит, -b говорит о том, что нужна информация только с последней загрузки.
Systemd очень удобно использовать, например, при настройке работы проектов на NodeJS.
Важная функция — отслеживание процесса и перезапуск сервиса в случае если процесс перестал существовать. В Systemd это реализовано по умолчанию и не требуется прибегать к дополнительным сервисам вроде supervisor.