В Linux служба - это программа, которая работает в фоновом режиме. Службы могут быть запущены по требованию или во время загрузки.
Если вы используете Linux в качестве основной операционной системы или платформы для разработки, вы будете иметь дело с различными службами, такими как веб-сервер, ssh или cron. Знание того, как составить список запущенных служб или проверить статус службы, важно при отладке системных проблем.
Большинство последних дистрибутивов Linux используют systemd в качестве системы запуска и менеджера сервисов по умолчанию.
Systemd - это набор инструментов для управления системами Linux. Он используется для загрузки машины, управления службами, автоматического монтирования файловых систем, регистрации событий, настройки имени хоста и других системных задач.
Листинг служб Linux
Systemd использует концепцию единиц, которые могут быть сервисами, сокетами, точками монтирования, устройствами и т.д. Единицы определяются с помощью текстовых файлов в формате ini. Эти файлы содержат информацию о блоке, его настройках и командах для выполнения. Расширения имен файлов определяют тип файла блока. Например, файлы блоков системных служб имеют расширение .service.
systemctl - это утилита командной строки, которая используется для контроля systemd и управления службами. Она является частью экосистемы systemd и доступна по умолчанию на всех системах.
Чтобы получить список всех загруженных сервисных модулей, введите:
1 | sudo systemctl list-units --type service |
Каждая строка вывода содержит следующие столбцы слева направо:
- UNIT - Имя службы.
- LOAD - Информация о том, был ли файл блока загружен в память.
- ACTIVE - Высокоуровневое состояние активации файла блока, которое может быть активным, перезагруженным, неактивным, неудачным, активирующим, деактивирующим. Является обобщением столбца SUB.
- SUB - Состояние активации файла блока низкого уровня. Значение этого поля зависит от типа подразделения. Например, блок типа service может находиться в одном из следующих состояний: dead, exited, failed, inactive или running.
- DESCRIPTION - Краткое описание файла устройства.
По умолчанию команда выводит список только загруженных активных служб. Чтобы увидеть и загруженные, но неактивные блоки, передайте параметр --all:
1 | sudo systemctl list-units --type service --all |
Если вы хотите увидеть все установленные файлы модулей, а не только загруженные, используйте:
1 | sudo systemctl list-unit-files |
Отображение статуса службы
Чтобы проверить статус службы, используйте команду systemctl status:
1 | sudo systemctl status <имя_службы>.service |
Где <service_name> - это имя службы, которую вы хотите проверить. Например, чтобы определить текущее состояние службы nginx, выполните следующее:
1 | sudo systemctl status nginx.service |
Вы можете опустить суффикс ".service". systemctl status nginx - это то же самое, что systemctl status nginx.service.
Команда выводит следующую информацию:
- Loaded - Загружен ли блок обслуживания и полный путь к файлу блока. Здесь также показано, включена ли функция запуска при загрузке.
- Active - активна ли служба и запущена ли она. Если ваш терминал поддерживает цвета и служба активна и запущена, точка (●) и часть "активна (запущена)" будут напечатаны зеленым цветом. В строке также показано, как долго служба работает.
- Docs - Документация сервиса.
- Process - Информация о процессах службы.
- Main PID - PID службы.
- Tasks - Количество задач, учтенных в блоке, и лимит задач.
- Memory - Информация об используемой памяти.
- CGroup - Информация о связанных группах управления.
Если вы хотите проверить только состояние службы, используйте команду systemctl is-active. Например, чтобы убедиться, что служба nginx запущена, выполните команду:
1 | systemctl is-active nginx.service |
1 | active |
Команда покажет вам статус службы. Если служба активна, команда возвращает статус выхода 0, что может быть полезно при использовании команды внутри сценариев оболочки.