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