Systemd більше, ніж просто демон

Система, з якої я познайомлю вас сьогодні, має величезне значення в світі Linux. Вона відповідає за завантаження, управління запущеними процесами, запис і зберігання логів, а також багато іншого в Ubuntu і більшості дистрибутивів, заснованих на ядрі Linux.

Знайомтеся: systemd, система ініціалізації демонів.

Цикл статей про systemd.

Що ще за демони?

Демони (вони ж сервіси або служби) - це програми, що працюють у фоновому режимі. Вони не мають графічного інтерфейсу і навіть не прив'язані до конкретного вікна терміналу. Отримавши команду, вони виконують дію, для якого були створені, а весь інший час знаходяться в режимі очікування. Наприклад, демон друку cupsd ставить в чергу документи, відправлені на друк, а потім посилає їх на принтер.

Systemd використовується в якості головного демона. Під час завантаження systemd инициализирует всі інші сервіси і управляє їх роботою аж до виключення. При необхідності ми можемо запустити або зупинити потрібний процес, призначити або скасувати його автоматичний запуск або навіть створити власний сервіс.

Екскурс в історію.

Суперечки навколо нововведення ведуться до цих пір.

  • на systemd покладено занадто вже багато завдань, що суперечить філософії Unix;
  • в зв'язку з переходом буде потрібно немало зусиль для адаптації серверів;

Прихильники наводять свої аргументи:

  • Upstart морально застаріла і заміна була необхідна;
  • systemd прискорює завантаження завдяки паралельному запуску демонів;
  • включення в systemd додаткових функцій на зразок ведення системних логів і автомонтірованіе робить адміністрування зручнішим;

Незважаючи на заперечення, перехід відбувся, тому давайте розберемося з базовим використанням цієї системи.

Управління сервісами через systemd.

Почнемо з простого завдання - дізнатися, які сервіси запущені в даний момент. Для звернення до systemd використовується команда systemctl. Ввівши в термінал:

systemctl list-units -t service

отримаємо приблизно наступне:

Systemd більше, ніж просто демон

В даному випадку запущено 65 сервісів.

У списку на скріншоті присутній cups.service. Це служба друку. Припустимо, що принтера у мене немає, зате є старий комп'ютер, на якому кожен запущений сервіс з'їдає дорогоцінні мегабайти пам'яті і уповільнює завантаження. Як мені зробити так, щоб сервіс не запускався автоматично? Для цього існує команда:

sudo systemctl disable cups

Замість cups можна підставити назву будь-якого іншого демона, який ви бажаєте вилучити з автозавантаження. При необхідності його легко можна буде повернути командою:

sudo systemctl enable названіе_демона

Systemd більше, ніж просто демон

Для негайної зупинки служить команда:

sudo systemctl stop названіе_демона

А для негайного запуску:

sudo systemctl start названіе_демона

Припустимо, мені потрібно перевірити, чи запущений в даний момент веб-сервер Apache. Ось так це можна зробити:

systemctl status apache2

Systemd більше, ніж просто демон

Зверніть увагу!
Щоб отримати інформацію про запущені сервісах, досить прав простого користувача. Для виконання будь-яких маніпуляцій потрібні права суперкористувача, тому ми діємо через sudo. Адже ви не використовуєте обліковий запис root постійно, чи не так? Якщо все-таки да, раджу покінчити з цією звичкою якомога швидше.

Хочете перевірити, які сервіси були зупинені в аварійному режимі? Будь ласка:

systemctl list-units -t service --failed

У моєму випадку таких немає. До речі, зовсім забув, чи включив я Apache в автозавантаження. Давайте з'ясуємо це:

systemctl is-enabled apache2

Висновок команди на скріншоті говорить про те, що apache після перезавантаження запуститься самостійно (enabled). А також про те, що старі системи ініціалізації демонів залишені в Ubuntu 16.04 (і вище) для сумісності.

Вам також може сподобатися:

  • Systemd більше, ніж просто демон
    Systemd в Linux: пишемо власні ...
  • Systemd більше, ніж просто демон
    Systemd як засіб діагностики ...
  • Systemd більше, ніж просто демон
    Корисні інструменти, які ...
  • Systemd більше, ніж просто демон
    Автоматичне резервне ...