Как просмотреть запущенные службы в Linux: полное руководство для всех систем инициализации

2025-02-12 · Обновлено 2026-07-06

Краткий ответ: как просмотреть запущенные службы в Linux

Чтобы просмотреть запущенные службы в Linux, используйте одну из этих команд — в зависимости от вашей системы инициализации:

  • systemd (Ubuntu 24.04, Debian 12, CentOS/RHEL 9, Fedora 40+ и большинство современных дистрибутивов в 2026 году):
    systemctl list-units --type=service --state=running
    
    Либо, чтобы вывести все служебные юниты независимо от их состояния:
    systemctl --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, чтобы найти службы, работающие на определённых портах.
Как просмотреть запущенные службы в Linux

Часто задаваемые вопросы (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.)