Использование Systemctl для получения списка служб Linux под управлением Systemd

В операционной системе Linux службы - это программы, работающие в фоновом режиме. Эти службы могут запускаться по требованию или в процессе загрузки системы. Как пользователь Linux или разработчик, вы будете взаимодействовать с различными службами, такими как веб-серверы, SSH или cron. Поэтому понимание того, как составить список запущенных служб и проверить их состояние, имеет решающее значение при устранении системных проблем.

Linux

Большинство современных дистрибутивов Linux используют systemd в качестве системы инициализации и менеджера служб по умолчанию. Systemd - это набор инструментов, используемых для управления системами Linux, включая загрузку машины, управление службами, автоматическое монтирование файловых систем, регистрацию событий, настройку имени хоста и выполнение других системных задач. В этом руководстве вы узнаете, как составить список служб в Linux с помощью systemd.

Systemd и Юниты

Systemd работает на основе концепции юнитов (Units), которыми могут быть сервисы, сокеты, точки монтирования, устройства и многое другое. Юниты определяются с помощью текстовых файлов в формате ini. Эти файлы содержат информацию о блоке, его настройках и командах для выполнения. Расширения имен файлов определяют тип файла блока. Например, файлы блоков системных служб имеют расширение .service.

Команда systemctl

systemctl - это утилита командной строки, используемая для контроля systemd и управления службами. Она является частью экосистемы systemd и доступна по умолчанию на всех системах. Чтобы получить список всех загруженных сервисных модулей, вы можете использовать следующую команду:

  • UNIT: имя единицы обслуживания.
  • LOAD: Информация о том, был ли файл блока загружен в память.
  • ACTIVE: Состояние активации файла блока высокого уровня, которое может быть активным, перезагруженным, неактивным, неудачным, активированным, деактивированным.
  • SUB: состояние активации файла блока на низком уровне. Значение этого поля зависит от типа блока.
  • DESCRIPTION: Краткое описание файла блока.

По умолчанию команда выводит список только загруженных активных юнитов. Чтобы увидеть и загруженные, но неактивные устройства, передайте параметр --all:

Если вы хотите увидеть все установленные файлы модулей, а не только загруженные, используйте:

Проверка состояния службы

Чтобы проверить статус службы, используйте команду systemctl status:

Здесь <имя_службы> - это имя службы, которую вы хотите проверить. Например, чтобы определить текущее состояние службы nginx, вы должны выполнить:

Вы можете опустить суффикс .service. systemctl status nginx - это то же самое, что systemctl status nginx.service.

Команда выведет следующую информацию:

  • Loaded: Загружен ли блок службы и полный путь к файлу блока. Она также показывает, разрешен ли запуск блока при загрузке.
  • Active: Активна ли служба и запущена ли она.
  • Docs: Документация службы.
  • Process (Процесс): Информация о процессах службы.
  • Main PID: PID службы.
  • Tasks (Задачи): Количество задач, учтенных в устройстве, и лимит задач.
  • Memory (Память): Информация об использованной памяти.
  • CGroup: Информация о связанных группах управления.

Если вы хотите проверить только состояние службы, используйте команду systemctl is-active. Например, чтобы убедиться, что служба nginx запущена, выполните команду:

Команда покажет вам состояние службы. Если служба активна, команда возвращает статус выхода 0, что может быть полезно при использовании команды внутри сценариев оболочки.

Перечисление служб на основе их состояния

Команда systemctl позволяет фильтровать службы на основе их состояния. Например, если вы хотите получить список всех служб, которые в данный момент запущены, вы можете использовать опцию --state=running:

Эта команда отобразит таблицу с информацией, включая имя службы, нагрузку, под-состояние и описание. Если вы хотите сосредоточиться на одной службе, вы можете направить вывод systemctl через grep. Эта команда изолирует запись в таблице для службы SSH:

Вы также можете использовать различные состояния для фильтрации служб. Например, для поиска отказавших служб можно использовать опцию --state=failed:

Комбинации состояний можно использовать, введя их в виде списка, разделенного запятыми. Убедитесь, что между опциями нет пробелов. Эта команда найдет службы, соответствующие любому из этих состояний:

Детальный просмотр службы

Если вы хотите изучить службу более подробно, вы можете использовать команду systemctl status, за которой следует имя службы. Например, для детального просмотра демона SSH, sshd, вы можете использовать следующую команду:

Эта команда отобразит компактное представление службы, включая ее имя, краткое описание, состояние загрузки, продолжительность работы, местонахождение документации, идентификатор процесса запущенного экземпляра, количество одновременно работающих экземпляров этой службы, объем потребляемой памяти и группу управления, к которой принадлежит служба. Также отображаются соответствующие записи из системного журнала, что может быть информативным, если вы исследуете службу, которая запустилась некорректно.

Понимание файлов модулей

Юнит-файлы являются неотъемлемой частью работы systemd. Они содержат необходимую информацию для запуска служб. Эти файлы обычно хранятся в каталоге /usr/lib/systemd. Однако вы также можете создать собственные файлы модулей в каталоге /etc/systemd/system.

Чтобы перечислить все единичные файлы в системе, вы можете использовать опцию list-unit-files в команде systemctl:

Эта команда отобразит список всех файлов блоков, их состояние (включен, отключен, статичен и т.д.), а также то, связаны ли они с какими-либо службами.

Включение и отключение служб

Systemd позволяет включать и отключать службы, что определяет, будут ли они автоматически запускаться при загрузке. Чтобы включить службу, используйте команду enable:

Чтобы отключить службу, используйте команду disable:

Не забудьте заменить <имя_службы> на имя службы, которую вы хотите включить или отключить.

Запуск и остановка служб

Вы также можете запустить или остановить службу немедленно, не влияя на ее состояние во время загрузки. Чтобы запустить службу, используйте команду start:

Чтобы остановить службу, используйте команду stop:

Опять же, замените <имя_службы> именем службы, которую вы хотите запустить или остановить.

Проверка журналов служб

Systemd поставляется с системой протоколирования, называемой журналом. Она регистрирует все, что связано с системой, включая службы. Чтобы проверить журналы службы, используйте команду journalctl:

Замените <имя_службы> именем службы, журналы которой вы хотите проверить. Эта команда отобразит список всех записей журнала, относящихся к указанной службе.

Нахождение файлов службыSystemctl

В операционной системе Linux конфигурационные файлы для systemd хранятся в определенных каталогах. Эти каталоги делятся на два типа: каталоги System Unit и каталоги User Unit.

Каталоги System Unit содержат файлы модулей для системных служб, а каталоги User Unit - файлы модулей для пользовательских служб. Точное расположение этих каталогов может зависеть от дистрибутива Linux и конфигурации системы.

Чтобы узнать расположение каталогов System Unit и User Unit в вашей системе, вы можете использовать команду pkg-config с модулем systemd. Команда pkg-config предоставляет метаданные об установленных в системе библиотеках, и в данном случае мы используем ее для получения информации о systemd.

Чтобы найти каталог модуля Systemd, выполните следующую команду:

Чтобы найти каталог User Unit, выполните следующую команду:

Эти команды выведут пути к соответствующим каталогам в вашей системе. Затем вы можете перейти в эти каталоги для просмотра файлов модулей systemd. Помните, что эти файлы очень важны для работы systemd, поэтому обращайтесь с ними осторожно.

Заключение

В этом руководстве мы рассмотрели основные принципы использования команды systemctl для списка и управления службами в Linux системах под управлением systemd. Мы рассмотрели концепцию подразделений в systemd, как проверять состояние служб и как фильтровать службы на основе их состояния. Мы также обсудили, где systemd хранит свои конфигурационные файлы и как их найти.

Освоение этих команд и концепций имеет решающее значение для эффективного системного администрирования и устранения неполадок в Linux. Регулярная практика и применение этих команд в повседневных задачах повысит вашу квалификацию в управлении службами в Linux. Помните, что понимание сервисов Вашей системы - это не только их перечисление, но и умение эффективно управлять ими и устранять неполадки. Продолжайте изучать и учиться, и вы станете авторитетом в управлении системой Linux.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий