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