Как найти запущенные службы в Linux с помощью команд Systemd [краткое руководство]
![Как найти запущенные службы в Linux с помощью команд Systemd [краткое руководство]](https://andreyex.ru/wp-content/uploads/2025/07/Kak-najti-zapushhennye-sluzhby-v-Linux-s-pomoshhyu-komand-Systemd-kratkoe-rukovodstvo-330x250.webp)
Системы Linux предоставляют различные системные службы (такие как управление процессами, вход в систему, системный журнал, cron и т. д.) и сетевые службы (такие как удаленный вход в систему, электронная почта, принтеры, веб-хостинг, хранение данных, передача файлов, разрешение доменных имен (с помощью DNS), динамическое назначение IP-адресов (с помощью DHCP) и многое другое).
С технической точки зрения сервис — это процесс или группа процессов (обычно называемых демонами), которые непрерывно работают в фоновом режиме и ожидают входящих запросов (особенно от клиентов).
Linux поддерживает различные способы управления службами (запуск, остановка, перезапуск, включение автоматического запуска при загрузке системы и т. д.), как правило, с помощью диспетчера процессов или служб. Большинство, если не все, современные дистрибутивы Linux теперь используют один и тот же диспетчер процессов: systemd.
Что такое Systemd?
Systemd — это менеджер систем и служб для Linux; полноценная замена процесса init, совместимая со сценариями инициализации SysV и LSB, а команда systemctl — основной инструмент для управления systemd.
Включённые и работающие службы в Linux
Включённые службы — это службы, которые автоматически запускаются при загрузке, а работающие службы в данный момент активны в памяти. Иногда служба может быть включена, но ещё не запущена (например, служба, запускаемая по расписанию или по требованию).
Чтобы перечислить включенные службы:
systemctl list-unit-files --type=service --state=enabled
Для сравнения с беговыми:
systemctl list-units --type=service --state=running
Это различие помогает устранять неполадки в работе служб, которые должны запускаться, но не запускаются, или служб, которые запускаются неожиданно.
Зачем нужен список запущенных служб в Linux?
Знание того, какие службы работают в вашей системе Linux, важно для:
- Мониторинг использования ресурсов
- Устранение неполадок с производительностью
- Обеспечение бесперебойной работы критически важных служб
- Оптимизация производительности и безопасности системы
Systemd упрощает управление сервисами с помощью мощных команд systemctl (также известных как основные команды), которые позволяют легко просматривать список активных сервисов, отслеживать их и управлять ими.
В этой статье мы покажем, как вывести список всех запущенных служб в Systemd в Linux, и предоставим подробное пошаговое руководство для пользователей с любым уровнем подготовки.
Список запущенных служб в SystemD в Linux
Если вы запустите команду systemctl без аргументов, она отобразит список всех загруженных модулей systemd (дополнительную информацию о модулях systemd можно найти в документации systemd), включая службы, с указанием их статуса (активны они или нет).
# systemctl
Список всех загруженных служб в Linux
Чтобы составить список всех загруженных служб в вашей системе (активных, запущенных, завершенных или завершенных с ошибкой), используйте подкоманду list-units и --type
переключатель со значением service.
# systemctl list-units --type=service
или
# systemctl --type=service
Список только активных служб в Linux
Чтобы вывести список всех загруженных, но неактивных служб, как работающих, так и завершивших работу, можно добавить параметр --state
со значением active, как показано ниже.
# systemctl list-units --type=service --state=active
или
# systemctl --type=service --state=active
Список запущенных служб в Linux с помощью systemctl
Но чтобы быстро просмотреть все запущенные службы (то есть все загруженные и активно работающие службы), выполните следующую команду.
# systemctl list-units --type=service --state=running
или
# systemctl --type=service --state=running
Давайте рассмотрим ключевые термины, связанные с модулями Systemd и их статусом:
- Единица измерения — единицей измерения может быть сервис, сокет, устройство или другие объекты.
- Загрузка — указывает, загружен ли модуль. Модуль может быть загружен, но не обязательно активен.
- Активно — показывает, работает ли устройство в данный момент или у него возникли проблемы и оно находится в нерабочем или неактивном состоянии.
- SUB — содержит дополнительную информацию о конкретном состоянии устройства. Для сервисов может указывать, запущен ли сервис (running), остановлен ли он (exited) или возникли ли проблемы (failed).
- Описание – Это помогает пользователям определить назначение устройства и понять его суть, не углубляясь в изучение подробных файлов конфигурации.
Создание псевдонима для команд systemctl
Если вы часто используете предыдущую команду, вы можете создать псевдоним команды в файле ~/.bashrc, как показано на рисунке, чтобы упростить её вызов.
# vim ~/.bashrc
Затем добавьте следующую строку под списком псевдонимов, как показано на скриншоте.
alias running_services='systemctl list-units --type=service --state=running'
Сохраните изменения в файле и закройте его. Теперь для просмотра списка всех загруженных и активно работающих служб на вашем сервере используйте команду running_services.
# running_services # используйте автодополнение
Узнайте, какой порт использует служба
Кроме того, важным аспектом работы служб является используемый ими порт. Чтобы определить порт, который прослушивает процесс-демон, можно использовать netstat или команду ss, как показано на рисунке.
Где флаг -l
означает вывод всех прослушивающих сокетов, -t
— вывод всех TCP-соединений, -u
— вывод всех UDP-соединений, -n
— вывод числовых номеров портов (вместо названий приложений), а -p
— вывод названия приложения.
netstat -ltup | grep zabbix_agentd
или
ss -ltup | grep zabbix_agentd
В пятом столбце указан сокет: локальный адрес: порт. В данном случае процесс zabbix_agentd прослушивает порт 10050.
Список открытых служб и портов брандмауэра
Кроме того, если на вашем сервере запущен брандмауэр, который контролирует блокировку или разрешение трафика для выбранных служб или портов, вы можете перечислить службы или порты, открытые в брандмауэре, с помощью firewall-cmd или команды ufw (в зависимости от используемого дистрибутива Linux), как показано на рисунке.
firewall-cmd --list-services [FirewallD] firewall-cmd --list-ports sudo ufw status [UFW Firewall]
Автоматизация мониторинга сервисов в Linux
Ручная проверка работающих служб может быть утомительной, особенно на рабочих серверах. Автоматизация этого процесса позволяет всегда быть в курсе изменений статуса служб без необходимости проверять их вручную.
Проверяйте запущенные службы каждые 5 минут с помощью задания Cron
Cron-задание — это запланированная задача в Linux, которая выполняется через определённые промежутки времени. С его помощью можно периодически регистрировать запущенные службы и просматривать их позже в случае сбоев или неожиданных отключений.
crontab -e
Добавьте эту строку в журнал запуска служб каждые 5 минут.
*/5 * * * * systemctl list-units --type=service --state=running > /tmp/running_services.log
Результат будет сохранён в файле /tmp/running_services.log
, и вы сможете просмотреть последние записанные сервисы с помощью команды:
cat /tmp/running_services.log
или
tail -f /tmp/running_services.log
Перезапустите службу в случае сбоя
По умолчанию, если служба выходит из строя или неожиданно останавливается, она не перезапускается автоматически, если это не настроено явно. Чтобы служба перезапускалась при каждом сбое, можно изменить файл модуля службы systemd.
Например, используйте следующую команду для редактирования конфигурации службы (замените apache2
на фактическое имя службы, которую вы хотите перезапустить автоматически):
systemctl edit apache2
В редакторе добавьте следующие строки.
[Service] Restart=always RestartSec=5s
Теперь перезагрузите systemd, чтобы изменения вступили в силу.
systemctl daemon-reload
Затем перезапустите службу, чтобы убедиться, что она использует новые настройки
systemctl restart apache2
Чтобы убедиться, что systemd настроен на автоматический перезапуск службы.
systemctl show apache2 --property=Restart
Усиление защиты сервисов с помощью параметров безопасности systemd
Чтобы повысить безопасность критически важных служб, можно добавить ограничения systemd в их файлы конфигурации.
[Service] NoNewPrivileges=true ProtectSystem=full PrivateTmp=true
Они ограничивают возможности сервисов, доступ к файловой системе и изоляцию. Такие инструменты, как systemd-analyze
безопасность, могут помочь оценить риски, связанные с сервисами, и предложить улучшения.
Заключение
На этом пока всё! В этом руководстве мы показали, как просматривать запущенные службы в systemd в Linux. Мы также рассказали, как проверить, какой порт прослушивает служба, и как просмотреть службы или порты, открытые в системном брандмауэре.
Есть ли у вас какие-либо дополнения или вопросы? Если да, свяжитесь с нами, воспользовавшись формой для комментариев ниже.
Редактор: AndreyEx