Система, з якої я познайомлю вас сьогодні, має величезне значення в світі Linux. Вона відповідає за завантаження, управління запущеними процесами, запис і зберігання логів, а також багато іншого в Ubuntu і більшості дистрибутивів, заснованих на ядрі Linux.
Знайомтеся: systemd, система ініціалізації демонів.
Цикл статей про systemd.
Що ще за демони?
Демони (вони ж сервіси або служби) - це програми, що працюють у фоновому режимі. Вони не мають графічного інтерфейсу і навіть не прив'язані до конкретного вікна терміналу. Отримавши команду, вони виконують дію, для якого були створені, а весь інший час знаходяться в режимі очікування. Наприклад, демон друку cupsd ставить в чергу документи, відправлені на друк, а потім посилає їх на принтер.
Systemd використовується в якості головного демона. Під час завантаження systemd инициализирует всі інші сервіси і управляє їх роботою аж до виключення. При необхідності ми можемо запустити або зупинити потрібний процес, призначити або скасувати його автоматичний запуск або навіть створити власний сервіс.
Екскурс в історію.
Суперечки навколо нововведення ведуться до цих пір.
- на systemd покладено занадто вже багато завдань, що суперечить філософії Unix;
- в зв'язку з переходом буде потрібно немало зусиль для адаптації серверів;
Прихильники наводять свої аргументи:
- Upstart морально застаріла і заміна була необхідна;
- systemd прискорює завантаження завдяки паралельному запуску демонів;
- включення в systemd додаткових функцій на зразок ведення системних логів і автомонтірованіе робить адміністрування зручнішим;
Незважаючи на заперечення, перехід відбувся, тому давайте розберемося з базовим використанням цієї системи.
Управління сервісами через systemd.
Почнемо з простого завдання - дізнатися, які сервіси запущені в даний момент. Для звернення до systemd використовується команда systemctl. Ввівши в термінал:
systemctl list-units -t service
отримаємо приблизно наступне:
В даному випадку запущено 65 сервісів.
У списку на скріншоті присутній cups.service. Це служба друку. Припустимо, що принтера у мене немає, зате є старий комп'ютер, на якому кожен запущений сервіс з'їдає дорогоцінні мегабайти пам'яті і уповільнює завантаження. Як мені зробити так, щоб сервіс не запускався автоматично? Для цього існує команда:
sudo systemctl disable cups
Замість cups можна підставити назву будь-якого іншого демона, який ви бажаєте вилучити з автозавантаження. При необхідності його легко можна буде повернути командою:
sudo systemctl enable названіе_демона
Для негайної зупинки служить команда:
sudo systemctl stop названіе_демона
А для негайного запуску:
sudo systemctl start названіе_демона
Припустимо, мені потрібно перевірити, чи запущений в даний момент веб-сервер Apache. Ось так це можна зробити:
systemctl status apache2
Зверніть увагу!
Щоб отримати інформацію про запущені сервісах, досить прав простого користувача. Для виконання будь-яких маніпуляцій потрібні права суперкористувача, тому ми діємо через sudo. Адже ви не використовуєте обліковий запис root постійно, чи не так? Якщо все-таки да, раджу покінчити з цією звичкою якомога швидше.
Хочете перевірити, які сервіси були зупинені в аварійному режимі? Будь ласка:
systemctl list-units -t service --failed
У моєму випадку таких немає. До речі, зовсім забув, чи включив я Apache в автозавантаження. Давайте з'ясуємо це:
systemctl is-enabled apache2
Висновок команди на скріншоті говорить про те, що apache після перезавантаження запуститься самостійно (enabled). А також про те, що старі системи ініціалізації демонів залишені в Ubuntu 16.04 (і вище) для сумісності.
Вам також може сподобатися:
- Systemd в Linux: пишемо власні ...
- Systemd як засіб діагностики ...
- Корисні інструменти, які ...
- Автоматичне резервне ...