Введение
В Linux служба — это программа, работающая в фоновом режиме. Службы могут быть запущены по запросу или во время загрузки.
Если вы используете Linux в качестве основной операционной системы или платформы для разработки, вы будете иметь дело с различными службами, такими как веб-сервер, ssh или cron. Знание того, как составить список запущенных служб или проверить состояние службы, важно при отладке системных проблем.
Большинство последних дистрибутивов Linux используют systemd в качестве системы инициализации по умолчанию и диспетчера служб.
Systemd — это набор инструментов для управления системами Linux. Он используется для загрузки машины, управления службами, автоматического монтирования файловых систем, регистрации событий, установки имени хоста и других системных задач.
В этой статье объясняется, как составить список служб в Linux.
Список служб Linux
Systemd использует концепцию дисков, которые могут быть службами, сокетами, точками монтирования, устройствами и т. д. Единицы определяются с помощью текстовых файлов в формате ini
. Эти файлы содержат информацию о накопителе, его настройках и командах, которые необходимо выполнить. Расширения имени файла определяют тип файла модуля. Например, файлы модулей системных служб имеют расширение .service
.
systemctl
— это утилита командной строки, используемая для управления systemd и службами. Он является частью экосистемы systemd и доступен по умолчанию во всех системах.
Чтобы получить список всех загруженных сервисных единиц, введите:
sudo systemctl list-units --type service
UNIT LOAD ACTIVE SUB DESCRIPTION
cron.service loaded active running Regular background program processing daemon...
Каждая строка вывода содержит следующие столбцы слева направо:
UNIT
- название сервисной единицы.LOAD
- Информация о том, что файл диска был загружен в память.ACTIVE
— статус активации файла диска высокого уровня, который может быть активным, перезагружающимся, неактивным, неудачным, активирующим, деактивирующим. Это обобщение столбцаSUB
.SUB
— статус активации низкоуровневого юнит-файла. Значение этого поля зависит от типа устройства. Например, служебный диск может находиться в одном из следующих состояний: отключен, отключен, неисправен, простаивает или работает.DESCRIPTION
- Краткое описание файла модуля.
По умолчанию команда перечисляет только активные загруженные диски. Чтобы увидеть загруженные, но также и неактивные диски, передайте параметр --all
:
sudo systemctl list-units --type service --all
Если вы хотите увидеть все установленные файлы модулей, а не только загруженные, используйте:
sudo systemctl list-unit-files
Посмотреть статус услуги
Чтобы проверить статус службы, используйте команду systemctl status
:
sudo systemctl status <service_name>.service
<service_name>
— это имя единицы службы, которую вы хотите проверить. Например, чтобы определить текущее состояние запускаемой службы nginx:
sudo systemctl status nginx.service
Вы можете опустить суффикс «.service». systemctl status nginx
равен systemctl status nginx.service
.
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2020-12-11 15:37:34 CET; 1 weeks 5 days ago
Docs: man:nginx(8)
Main PID: 13172 (nginx)
Tasks: 3 (limit: 4915)
CGroup: /system.slice/nginx.service
├─13172 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
├─15416 nginx: worker process
└─15417 nginx: worker process
Команда напечатает следующую информацию:
Loaded
— был ли загружен сервисный модуль и полный путь к файлу модуля. Он также показывает, включен ли диск для загрузки во время загрузки.Active
— запущена ли служба. Если ваш терминал поддерживает цвета, а служба запущена и работает, точка (●
) и часть «активно (работает)» будут напечатаны зеленым цветом. В строке также указана продолжительность услуги.Docs
- Сервисная документация.Process
— информация о сервисных процессах.Main PID
— служба PID.Tasks
— количество действий, приходящихся на единицу, и лимит действий.Memory
- Информация об используемой памяти.CGroup
- Информация о связанных контрольных группах.
Если вы просто хотите проверить состояние службы, используйте команду systemctl is-active
. Например, чтобы убедиться, что служба nginx запущена, запустите:
systemctl is-active nginx.service
active
Команда покажет вам статус службы. Если служба активна, команда возвращает статус выхода 0
, что может быть полезно при использовании команды в сценариях оболочки.
Вывод
Мы показали вам, как использовать команду systemctl
для просмотра списка служб Linux и проверки их состояния.