Как просмотреть запущенные службы в Linux: полное руководство для всех систем инициализации
Краткий ответ: как просмотреть запущенные службы в Linux
Чтобы просмотреть запущенные службы в Linux, используйте одну из этих команд — в зависимости от вашей системы инициализации:
- systemd (Ubuntu 24.04, Debian 12, CentOS/RHEL 9, Fedora 40+ и большинство современных дистрибутивов в 2026 году):
Либо, чтобы вывести все служебные юниты независимо от их состояния:systemctl list-units --type=service --state=runningsystemctl --type=service - SysVinit / более старые системы (или чтобы учесть устаревшие init-скрипты):
service --status-all
Сегодня systemd — это система инициализации по умолчанию практически в каждом популярном дистрибутиве Linux, поэтому в подавляющем большинстве случаев ответом будет systemctl list-units --type=service --state=running. Команда выводит таблицу активных в данный момент служб с их состояниями LOAD, ACTIVE и SUB. Если команда systemctl не найдена, значит, ваша система не использует systemd — воспользуйтесь service --status-all (SysVinit) или rc-status (OpenRC).
Далее в этом руководстве каждый способ разобран подробно, включая фильтрацию по состоянию, проверку служб, запускаемых при загрузке, и поиск служб по порту.
Введение
Службы Linux — это фоновые процессы, которые работают непрерывно и выполняют системные задачи: управляют сетями, обрабатывают вход пользователей, обеспечивают работу веб-серверов и т. п. Управлять этими службами можно с помощью разных инструментов — в зависимости от используемого дистрибутива Linux и системы инициализации. По состоянию на 2026 год стандартной системой инициализации почти во всех основных дистрибутивах является systemd, поэтому большая часть этого руководства посвящена команде systemctl.
Умение просматривать запущенные службы необходимо системным администраторам и разработчикам. Оно помогает:
- Устранять неполадки — проверить, работает ли критически важная служба или она завершилась с ошибкой.
- Отслеживать производительность — выявлять службы, которые активно потребляют ресурсы.
- Проводить аудит безопасности — убедиться, что активны только необходимые службы.
Использование systemctl (для систем на базе systemd)
Большинство современных дистрибутивов Linux используют в качестве системы инициализации systemd. Сюда входят актуальные на 2026 год выпуски: Ubuntu (с 16.04 по 24.04 LTS и новее), Debian (с 8 по 12 «Bookworm» и новее), Fedora (40+), CentOS Stream / RHEL / Rocky Linux / AlmaLinux (с 7 по 9 и новее), а также openSUSE. Основной инструмент для управления службами и их просмотра во всех этих системах — команда systemctl.
Проверка состояния одной службы
Чтобы проверить, работает ли конкретная служба, используйте:
systemctl status <service-name>
Например, чтобы проверить, работает ли веб-сервер nginx:
systemctl status nginx
Вывод покажет, активна ли служба (active (running)), неактивна ли она или завершилась с ошибкой, а также журналы для отладки.
Просмотр всех активных служб
Чтобы вывести все запущенные службы, используйте:
systemctl list-units --type=service --state=running
Эта команда отображает таблицу всех запущенных в данный момент служб вместе с их состоянием.
Просмотр всех служб (включая неактивные)
Если вы хотите увидеть все службы независимо от того, работают они или нет:
systemctl list-units --type=service
Сюда войдут службы, которые активны, неактивны, завершились с ошибкой или находятся в других состояниях.
Фильтрация служб по состоянию
Отфильтровать службы по состоянию можно так:
systemctl list-units --type=service --state=failed
Эта команда выведет только службы, завершившиеся с ошибкой, что удобно при устранении неполадок.
Просмотр служб, включённых при загрузке
Чтобы узнать, какие службы настроены на автоматический запуск при загрузке:
systemctl list-unit-files --type=service | grep enabled
Пример вывода
Типичный вывод команды systemctl list-units --type=service --state=running может выглядеть так:
UNIT LOAD ACTIVE SUB DESCRIPTION
cron.service loaded active running Regular background program processing daemon
networking.service loaded active running Raise network interfaces
ssh.service loaded active running OpenBSD Secure Shell server
systemd-logind.service loaded active running Login Service
Итоги
- Используйте
systemctl status <service>, чтобы проверить состояние одной службы. - Используйте
systemctl list-units --type=service --state=running, чтобы вывести активные службы. - Используйте
systemctl list-units --type=service, чтобы увидеть все службы. - Используйте
systemctl list-unit-files --type=service, чтобы просмотреть службы, включённые при загрузке.
Использование ps и grep для просмотра запущенных процессов
Если вы хотите просмотреть запущенные службы, не полагаясь на systemctl или другие инструменты управления службами, воспользуйтесь командой ps (статус процессов) вместе с grep, чтобы найти нужные процессы.
Этот способ полезен, когда:
- Вы работаете в минимальной системе Linux, где нет команд
systemctlилиservice. - Вы хотите проверить, работает ли конкретный процесс, независимо от системы инициализации.
Просмотр всех запущенных процессов
Команда ps aux отображает все запущенные процессы в системе:
ps aux
Она выводит подробный список всех запущенных процессов, включая их идентификаторы (PID), загрузку CPU, использование памяти и имена команд.
Поиск конкретной службы
Чтобы проверить, работает ли определённая служба, используйте ps aux | grep <service-name>:
ps aux | grep nginx
Команда выведет строки, содержащие «nginx», и покажет, запущен ли он. Вывод может выглядеть так:
root 1034 0.0 0.3 49536 3412 ? Ss 12:34 0:00 nginx: master process /usr/sbin/nginx
www-data 1035 0.0 0.2 49536 2824 ? S 12:34 0:00 nginx: worker process
user 2045 0.0 0.0 14856 900 pts/0 S+ 12:35 0:00 grep --color=auto nginx
Здесь:
- Первые две строки говорят о том, что служба nginx работает.
- Последняя строка (
grep --color=auto nginx) — это сама командаgrep. Её можно исключить так:
ps aux | grep nginx | grep -v grep
Отображение процессов в виде дерева
Чтобы получить более наглядное представление, используйте:
ps fax
Команда показывает древовидную структуру запущенных процессов, благодаря чему проще понять, какие службы работают и какие у них дочерние процессы.
Поиск служб по порту
Если вы подозреваете, что служба работает на определённом порту, но не знаете её названия, используйте:
netstat -tulnp | grep :80
или, если netstat недоступен:
ss -tulnp | grep :80
Команда выведет процесс, использующий порт 80 (его обычно занимают веб-серверы, такие как Nginx или Apache).
Итоги
- Используйте
ps aux, чтобы вывести все запущенные процессы. - Используйте
ps aux | grep <service-name>, чтобы проверить конкретную службу. - Используйте
ps faxдля древовидного представления процессов. - Используйте
netstat -tulnpилиss -tulnp, чтобы найти службы, работающие на определённых портах.
Часто задаваемые вопросы (FAQ)
1. Как проверить, работает ли служба в Linux?
Способ зависит от вашего дистрибутива Linux:
- Для систем на базе systemd:
systemctl status <service-name> - Для систем на базе SysVinit:
service <service-name> status - С помощью ps и grep:
ps aux | grep <service-name>
2. Как просмотреть все запущенные службы?
- Для систем на базе systemd:
systemctl list-units --type=service --state=running - Для систем на базе SysVinit:
service --status-all - С помощью команды
ps:ps aux
3. Как проверить, запускается ли служба при загрузке?
- Для systemd:
systemctl is-enabled <service-name> - Для SysVinit (системы на базе RHEL):
chkconfig --list <service-name>
4. Как перезапустить службу?
- Для систем на базе systemd:
sudo systemctl restart <service-name> - Для систем на базе SysVinit:
sudo service <service-name> restart
5. Как остановить или отключить службу?
- Чтобы временно остановить службу:
sudo systemctl stop <service-name> - Чтобы служба не запускалась при загрузке:
sudo systemctl disable <service-name>
6. Как узнать, какая служба использует определённый порт?
Найти службы, работающие на конкретном порту, можно с помощью netstat или ss:
netstat -tulnp | grep :80
или
ss -tulnp | grep :80
7. Что делать, если systemctl не найден?
Если вы получаете ошибку вроде command not found: systemctl, значит, ваша система, возможно, не использует systemd. Попробуйте:
service --status-all
или
ps aux | grep <service-name>
8. Как просмотреть службы, завершившиеся с ошибкой?
Для систем на базе systemd выполните:
systemctl list-units --type=service --state=failed
9. Как включить ведение журнала для конкретной службы?
Чтобы просмотреть журналы службы, которой управляет systemd, используйте:
journalctl -u <service-name>
Чтобы просматривать журналы в реальном времени:
journalctl -u <service-name> -f
10. Можно ли использовать top или htop, чтобы увидеть запущенные службы?
Да! top и htop показывают запущенные процессы в реальном времени:
- Используйте
top:top - Используйте
htop(интерактивный и удобный):
(Если он не установлен, поставьте его командойhtopsudo apt install htopилиsudo yum install htop.)
