Что такое 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]