Управление сервисами через systemctl

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

 

systemd service



Команда для перечитывания конфигурационных файлов при сохранении процесса (аналог nginx -s reload)

systemctl reload nginx.service

 

Если возникают какие-то ошибки можно посмотреть логи службы

journalctl -b -u nginx.service

 

Ключ -u указывает юнит, -b  говорит о том, что нужна информация только с последней загрузки.

 

 

Systemd очень удобно использовать, например, при настройке работы проектов на NodeJS.

Важная функция — отслеживание процесса и перезапуск сервиса в случае если процесс перестал существовать. В Systemd это реализовано по умолчанию и не требуется прибегать к дополнительным сервисам вроде supervisor.