JavaRush /Курси /Docker SELF /Основи управління сервісами: команди systemctl (запуск, з...

Основи управління сервісами: команди systemctl (запуск, зупинка, перезапуск сервісів)

Docker SELF
Рівень 3 , Лекція 0
Відкрита

1. Що таке сервіси в Linux?

Сервіси — це основа будь-якого сучасного дистрибутива Linux. Хочеш запустити свій вебсервер на Nginx? Запусти та налаштуй відповідний сервіс. Потрібно, щоб база даних MySQL запрацювала? Знову ж таки, це сервіс. Навіть твій улюблений cron, який виконуватиме свої круті bash-скрипти, — це теж сервіс. Керування сервісами — це навичка, яку ти обов'язково застосуєш не тільки на роботі, але й у своїх особистих проєктах. До речі, на співбесідах питання "А як ти зупиниш сервіс?" трапляється частіше, ніж ти міг би подумати.

Визначення і роль

Сервіс у Linux — це програма, яка працює у фоні (тобто як демон, від англійського "daemon"). Ці програми можуть запускатися автоматично під час завантаження системи або вручну за необхідності. Вони відповідають за виконання конкретних завдань, таких як:

  • Обслуговування вебзапитів (наприклад, nginx/apache).
  • Підтримка віддаленого доступу (наприклад, openssh).
  • Запуск завдань за розкладом (наприклад, cron).

По суті, сервіси — це ті самі "робочі конячки", які виконують завдання, невидимі оку користувача, але абсолютно критичні для роботи системи.


2. Основи керування сервісами за допомогою systemctl

Що таке systemctl?

Почнемо з того, що systemctl — це основна команда для керування сервісами в системах, які використовують systemd. Якщо твоя система працює на сучасному Linux-дистрибутиві (наприклад, Ubuntu, Fedora або CentOS), швидше за все, вона саме використовує systemd.

Основні функції

  1. Запуск сервісу: запустити роботу служби, якщо вона вимкнена.
  2. Зупинка сервісу: завершити роботу служби.
  3. Перезапуск сервісу: спочатку зупинити, а потім заново запустити службу.
  4. Перевірка статусу: дізнатися поточний стан служби.

Ось базова структура команди:

sudo systemctl [дія] [ім'я_сервісу]

Запуск і зупинка сервісу

Запуск:

Уяви, що ти встановив вебсервер nginx і хочеш його запустити. Саме для цього використовується команда start:

sudo systemctl start nginx

Зупинка:

А що, як ти хочеш тимчасово відключити вебсервер? Тебе врятує команда stop:

sudo systemctl stop nginx

Перезапуск сервісу

Перезапуск потрібен, щоб застосувати зміни в конфігурації або просто "освіжити" сервіс (грубо кажучи, дати йому кави й нагадати, що пора працювати). Використовуй команду restart:

sudo systemctl restart nginx

Перевірка статусу

Ти не впевнений, чи працює nginx? Команда status надасть вичерпну інформацію:

sudo systemctl status nginx

На виході ти побачиш:

  • Унікальний ідентифікатор процесу (PID).
  • Час запуску.
  • Логи помилок, якщо щось пішло не так.

Приклад виходу:

nginx.service - A high performance web server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2023-11-01 09:00:00 UTC; 10min ago
   ...

3. Автозапуск сервісів

Увімкнення автозапуску

Щоб сервіс автоматично запускався кожного разу при старті системи, використовуй:

sudo systemctl enable nginx

Вимкнення автозапуску

А якщо хочеш, щоб сервіс більше не запускався при завантаженні:

sudo systemctl disable nginx

Ось простий спосіб перевірити, чи увімкнено автозапуск:

systemctl is-enabled nginx

Практика керування сервісами

Давайте проведемо комплексну вправу на прикладі служби cron.

  1. Запусти службу cron:

    sudo systemctl start cron
    
  2. Перевір, чи працює вона:

    sudo systemctl status cron
    

    Переконайся, що статус "active (running)".

  3. Зупини службу cron:

    sudo systemctl stop cron
    

    Перевір, що статус змінився на "inactive (dead)".

  4. Перезапусти службу cron:

    sudo systemctl restart cron
    

4. Різниця між активними, відключеними та аварійно завершеними сервісами

Сервіси можуть мати різні стани. Ось їх основні типи:

  1. Active (running) — сервіс активно працює; все в порядку.
  2. Inactive (dead) — сервіс зупинений.
  3. Failed — сталася помилка при запуску, зупинці або виконанні сервісу.

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

systemctl --failed

5. Типові помилки і підводні камені

Помилка: Unit not found

Якщо ви отримали повідомлення типу:

Failed to start nginx.service: Unit nginx.service not found.

Це може означати, що потрібний вам сервіс або не встановлений, або його назва вказана неправильно. Перевірте правильну назву:

systemctl list-unit-files | grep nginx

Помилка прав

Якщо ви забули запустити команду з правами sudo, скоріше за все, отримаєте відмову в доступі:

Permission denied

Не забувайте додавати sudo перед командами systemctl.


6. Застосування у реальних проектах

Управління сервісами — це те, що ви будете використовувати у будь-якій ролі, пов'язаній з Linux:

  • DevOps: автоматизація та управління всіма системними службами.
  • Адміністрування серверів: контроль за станом веб-серверів, баз даних та інших служб.
  • Розробка на Linux: ви повинні розуміти, як управляти сервісами, які пов’язані з вашим проектом (наприклад, запуск серверів розробки).

Таким чином, знання команди systemctl — це не просто абстрактний навик, а реальний інструмент для роботи. Приклад: потрібно перезапустити веб-сервер після оновлення сайту? Один виклик sudo systemctl restart nginx — і завдання вирішено!

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ