Linux — це операційна система з відкритим вихідним кодом, відома своєю гнучкістю, стабільністю та широким набором інструментів для управління процесами та сервісами. Одним з таких інструментів є Systemd, який став стандартом управління системними сервісами в більшості сучасних дистрибутивів Linux. Однією з головних переваг Systemd є його здатність ефективно управляти запущеними сервісами та системними ресурсами.
У цій статті ми детально розглянемо, як за допомогою Systemd відображати всі запущені сервіси, управляти ними та контролювати порти, що використовуються цими сервісами. Ми також обговоримо, як використовувати Systemd для моніторингу безпеки через брандмауер.
Що таке системи управління сервісами в Linux?
В Linux управління сервісами — це ключовий аспект адміністрування. Важливо мати можливість швидко отримувати інформацію про те, які сервіси працюють, а які завершили свою роботу або відключені. Це потрібно при моніторингу продуктивності системи та для усунення неполадок, якщо такі будуть виявлені.
Раніше адміністрування сервісами здійснювалося за допомогою init — традиційного процесу ініціалізації, який відповідав за запуск сервісів при завантаженні системи. Однак з впровадженням Systemd управління стало більш гнучким і потужним. Systemd прийшов на зміну init і став стандартом де-факто в більшості дистрибутивів Linux, таких як Ubuntu, CentOS та Fedora.
Що таке Systemd?
Systemd — системний менеджер ініціалізації, який управляє процесами та сервісами в Linux. Він був створений для підвищення швидкості завантаження системи та заміни застарілого init. Systemd виконує кілька важливих функцій:
- Ініціалізація сервісів при запуску системи.
- Управління залежностями між сервісами.
- Моніторинг стану сервісів та процесів у системі.
- Журналювання (systemd-journald) всіх подій, пов'язаних із сервісами та процесами.
Однією з головних переваг Systemd є його сумісність з SysV та підтримка старих скриптів LSB, що дозволяє плавно перейти від використання init до більш сучасного управління сервісами.
Навіщо потрібно відображати запущені сервіси?
Знання того, які сервіси запущені на вашій системі, критично важливе для адміністрування. Це дозволяє:
- Моніторити використання ресурсів: якщо сервіс споживає занадто багато пам'яті або процесорних потужностей, це може вказувати на проблему.
- Усувати неполадки: у разі збоїв системи можна швидко визначити, який сервіс був причиною проблеми.
Оптимізувати продуктивність: непотрібні сервіси можна відключити або налаштувати їх запуск за запитом, що знизить навантаження на систему.
Відображення всіх сервісів у Linux через Systemd
Щоб відобразити всі сервіси, які активні в системі, можна використовувати наявні команди:
systemctl list-units --type=service
Цей спосіб виведе список всіх системних юнітів типу "сервіс", завантажених у систему. Команда показує як активні, так і завершені сервіси. Для спрощеного виводу можна використовувати скорочену команду:
systemctl --type=service
Як відобразити активні сервіси в Systemd
Активні сервіси — це ті, які або продовжують виконуватися, або завершили свою роботу, але ще не вивантажені з пам'яті. Щоб побачити список всіх активних сервісів, необхідно виконати наступну команду:
systemctl list-units --type=service --state=active
Для виводу з мінімальними параметрами можна використовувати альтернативну команду:
systemctl --type=service --state=active
Як відобразити тільки запущені сервіси
Запущені сервіси — це ті, які продовжують виконуватися в даний момент. Щоб відобразити їх, використовуйте наступну команду:
systemctl list-units --type=service --state=running
Альтернативна команда:
systemctl --type=service --state=running
Ці команди допоможуть системним адміністраторам швидко отримати інформацію про те, які сервіси працюють в даний момент.
Ключові терміни в Systemd
- Unit (Юніт) — це базова одиниця в Systemd. Юніти можуть бути сервісами, пристроями, монтувальними точками, сокетами та іншими об'єктами, що управляються системою.
- Load (Завантаження) — статус, що вказує, чи завантажено юніт у пам'ять.
- Active (Активний) — вказує, активний чи юніт (наприклад, сервіс запущений і працює).
- SUB (Підстан) — уточнений статус юніта, який показує його поточний стан, наприклад, "running" (виконується) або "failed" (збій).
- Description (Опис) — коротка строка, яка описує мету юніта.
Створення алиаса для команди Systemd
Щоб спростити виклик команди відображення запущених сервісів, можна створити алиас. Це особливо корисно, якщо часто доводиться виконувати одну й ту ж команду.
Додайте наступний алиас у файл ~/.bashrc:
alias running_services='systemctl list-units --type=service --state=running'
Після додавання цього алиаса оновіть поточну сесію командою:
source ~/.bashrc
Тепер ви можете швидко відображати запущені сервіси, використовуючи команду
running_services.
Визначення порту, на якому прослуховує сервіс
Щоб дізнатися, який порт використовує конкретний сервіс, можна використовувати наступні команди:
netstat -ltup | grep <ім'я_процесу>
Альтернативна команда з використанням ss:
ss -ltup | grep <ім'я_процесу>
Ці команди відобразять всі порти, на яких сервіси прослуховують вхідні з'єднання, а також інформацію про самі сервіси.
Відображення сервісів і портів, відкритих у брандмауері
Для контролю безпеки системи важливо знати, які сервіси і порти дозволені в брандмауері. Розглянемо, як це зробити з використанням різних брандмауерів.
FirewallD
Для відображення дозволених сервісів:
firewall-cmd --list-services
Для відображення відкритих портів:
firewall-cmd --list-ports
UFW
Для відображення статусу UFW та списку дозволених сервісів і портів:
sudo ufw status
Ці команди допоможуть вам визначити, які порти і сервіси дозволені для доступу ззовні через брандмауер.
Висновок
Управління сервісами — це важлива частина адміністрування Linux-систем. Systemd надає потужні інструменти для моніторингу та управління сервісами, що робить його незамінним для сучасних адміністраторів. З його допомогою можна легко відстежувати активні сервіси, перевіряти їх стан і оптимізувати використання ресурсів. Більше того, Systemd дозволяє інтегрувати безпеку, відстежуючи порти та взаємодію з брандмауером, що сприяє підвищенню рівня захисту системи.
Також пропонуємо розглянути інші корисні статті: