Как найти запущенные службы в Linux с помощью команд Systemd [краткое руководство]

26.07.2025
Как найти запущенные службы в Linux с помощью команд Systemd [краткое руководство]

Системы 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. Мы также рассказали, как проверить, какой порт прослушивает служба, и как просмотреть службы или порты, открытые в системном брандмауэре.

Есть ли у вас какие-либо дополнения или вопросы? Если да, свяжитесь с нами, воспользовавшись формой для комментариев ниже.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Редактор: AndreyEx

Рейтинг: 5 (1 голос)
Если статья понравилась, то поделитесь ей в социальных сетях:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Это может быть вам интересно


Загрузка...

Спасибо!

Теперь редакторы в курсе.

Прокрутить страницу до начала