Что такое systemctl? Управление службами в Linux

Что такое systemctl?

В основе работы любой серверной системы лежит взаимодействия между ее службами. Даже если вы простой пользователь знать о принципах их работы будет  полезным приобретением. В этой статье разберем базовые понятия об функционировании служб в системах с Linux, популярные и наиболее часто используемые команды  для контроля  над ними. 

 Перед там как перейти к systemctl начнем с того что такое systemd. systemd - это принятый стандарт для дистрибутивов Linux, который выполняет  создание, проверку, активацию, определение параметров для запуска и готовности системы к работе после запуска ядра. Другими слова systemd является системой инициализации и диспетчером. В управлении systemd существует разные типы модулей, они делятся на отдельные категории в зависимости от их ресурса и назначения которое они несут. Определить тип таких модулей можно по приставке в конце, например, .service - файлы модулей служб, .socket - файлы модулей сокета  и т.д.

В свою очередь systemctl является инструментом для управления системой инициализации, с помощью него можно взаимодействовать с systemd и выполнять необходимые операции и команды по его настройке. Он пришел на смену Init.и включает в себя утилиты, библиотеки, демоны и т.д, для контроля и выполнения операций над службами в линуксоидных системах. 

Управление службами. Команды

 Чтобы проверить какие сервисы сейчас запущены на сервере и узнать их статус,  также краткую информацию о их состоянии можно использовать команду:

systemctl list-units

На выводе команды получим:

UNIT                        LOAD      ACTIVE       SUB            DESCRIPTION
httpd.service        loaded    active         running      The Apache HTTP Server
auditd.service      loaded    active         running      Security Auditing Service
crond.service       loaded    active         running      Command Scheduler
dovecot.service  loaded    active         running      Dovecot IMAP/POP3 email server
dbus.service        loaded    active         running      D-Bus System Message Bus
exim.service        loaded    active         running      Exim Mail Transport Agent

Где:

UNIT - название модуля;

LOAD   - указывает загружались ли конфигурация модуля;

ACTIVE - указывает активный ли модуль;

SUB -  указывает на состояние метода работы модуля;

DESCRIPTION - краткое описание назначения модуля.

 Используя systemctl, можно проверить состояние любой службы systemd. Команда состояния предоставляет информацию о службе, определяет активность службы  или сведения о том, почему оно не работает. Для этого используем команду:

 systemctl status [service.name] 

где [service.name]  - название службы.

Systemctl также может использоваться для запуска или остановки служб systemd. Чтобы остановить службу применяется команда: 

systemctl stop [service.name]

А чтобы запустить:

systemctl start [service.name] 

Если после внесения обновлений вам необходимо перезапустить службу используется команда: 

systemctl restart [service.name]

Перезапуск остановит службу и запущенные ее процессы и запустить их заново.

Перезагрузка службы работает путем остановки рабочих процессов, внесение изменений в  конфигурации и после заново запускает процессы.  Перезагрузка  не отключает саму службу. Выполнить перезагрузку можно  если система может сделать внесенные обновления без полного перезапуска.  Выполняется через команду

systemctl reload [service.name] 

Если необходимо, чтобы служба автоматически запускалась при включении или перезагрузке сервера, это позволяет не запускать каждый раз службы вручную, используется команда:

systemctl enable [service.name] 

Также вы можете проверить добавлена ли определенная служба в автозагрузку через команду:

systemctl is-enable [service.name] 

Если нужно убрать службу с автозапуска, прописываем команду:

systemctl disable [service.name]