Как просмотреть запущенные службы в Linux: Полное руководство для всех систем инициализации
Введение
Службы Linux — это фоновые процессы, которые работают непрерывно для выполнения системных задач, таких как управление сетями, обработка входа пользователей или работа веб-серверов. Эти службы можно управлять с помощью различных инструментов, в зависимости от используемого дистрибутива Linux и системы инициализации.
Знание того, как просматривать запущенные службы, имеет важное значение для системных администраторов и разработчиков. Это помогает в:
- Устранении неполадок — Проверка, работает ли критически важная служба или она вышла из строя.
- Мониторинге производительности — Определение ресурсоемких служб.
- Аудите безопасности — Обеспечение того, чтобы активными были только необходимые службы.
Использование systemctl (для систем на базе Systemd)
Большинство современных дистрибутивов Linux, включая Ubuntu (16.04+), CentOS (7+), Fedora и Debian (8+), используют systemd в качестве системы инициализации. Команда 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
(интерактивный и удобный):
(Установите с помощьюhtop
sudo apt install htop
илиsudo yum install htop
, если он недоступен.)