Поиск по сайту:

Как составить список служб Linux с помощью systemctl


Резюме: Чтобы просмотреть все запущенные службы в системе Linux с помощью systemd, используйте команду «systemctl --type=service --state=running». Это покажет вам имя каждой активной службы, загрузку, подсостояние и описание. Вы также можете изменить значение состояния, чтобы увидеть службы, которые мертвы, завершены, отказали или неактивны.

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

Сервисы и демоны

Службы и демоны — это фоновые задачи, которые выполняются без пользовательского интерфейса, не требуют участия человека и обычно запускаются при загрузке компьютера.

В свое время сервисы запускались с помощью init, который запускался самым первым процессом. Детали служб хранились в наборе сценариев, расположенных в каталоге «/etc/init/d». В несистемных дистрибутивах это все еще так.

В мире systemd службы запускаются с помощью systemd, который теперь является первым запускаемым процессом. Сведения о службах хранятся в юнит-файлах, расположенных в каталоге «/usr/lib/systemd».

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

Поскольку мы рассматриваем здесь команды, специфичные для systemd, первое, что вам нужно знать, — это используете ли вы дистрибутив на основе systemd или нет.

init или на основе systemd?

Подавляющее большинство дистрибутивов Linux используют systemd, включая Arch, Red Hat и Debian, а также многие производные от них дистрибутивы. Это включает в себя семейство дистрибутивов Ubuntu, Fedora и ее версии, а также Manjaro и другие дистрибутивы на основе Arch.

Однако существуют форки или разновидности некоторых из этих дистрибутивов, которые были созданы специально для того, чтобы избежать использования systemd. Не только это, но и другие системы инициализации, которые кто-то может использовать вместо той, которая по умолчанию входит в их дистрибутив, например, runit или s6-linux-init.

Если вам нужно администрировать компьютер с Linux, который вы не настраивали самостоятельно, единственный способ убедиться, использует ли он systemd или нет, — это проверить. Мы можем сделать это, просмотрев дерево процессов с помощью команды pstree. Нам нужно увидеть только самую вершину дерева — в конце концов, мы ищем самый первый запущенный процесс — поэтому мы направим вывод через команду head и запросим первые пять записей.

pstree | head -5

Мы видим, что systemd — это первый процесс, который запускается после загрузки, поэтому мы определенно имеем установку Linux на основе systemd.

Использование systemctl для получения списка служб

Команда для вывода списка служб и демонов — systemctl. Мы можем улучшить команду systemctl с параметрами type и state. Мы просим systemctl сообщать о службах, которые находятся в рабочем состоянии.

systemctl --type=service --state=running

Формируется таблица данных. Если оно слишком широкое или длинное для окна вашего терминала, оно отображается в средстве просмотра файлов по умолчанию, которое, скорее всего, будет меньше.

Чтобы увидеть правый конец таблицы, нажмите клавишу со стрелкой вправо. Чтобы вернуться к обычному виду, нажмите клавишу со стрелкой влево.

Нажмите клавишу Q, чтобы выйти из меньшего. Отображаемые столбцы:

  • Единица: имя службы или демона. Столбец называется «Unit», потому что все, что находится в этом столбце, было запущено с использованием информации systemd, найденной в файле модуля.
  • Загрузка: состояние загрузки службы или демона. Он может быть загружен, не найден, с неправильными настройками, ошибкой или замаскирован.
  • Активно: общее состояние службы или демона. Оно может быть активным, перезагружающимся, неактивным, сбойным, активированным или деактивированным.
  • SUB: подсостояние службы или демона. Он может быть мертвым, завершенным, неисправным, неактивным или работающим.
  • Описание: краткое описание объекта.

Мы можем направить вывод systemctl через grep, если хотим сосредоточиться на одном сервисе. Эта команда изолирует запись таблицы для службы ssh.

systemctl --type=service --state=running | grep ssh

До сих пор мы фильтровали содержимое таблицы, предоставляя параметр state=running. Вместо этого мы можем использовать любое из возможных значений подсостояния: dead, exited, failed, inactive или running.

Ищем неисправные сервисы:

systemctl --type=service --state=failed

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

systemctl --type=service --state=failed,exited

Нажатие клавиши со стрелкой вправо для просмотра столбцов за пределами экрана показывает, что в списке есть смесь завершенных и отказавших служб.

По умолчанию systemctl список процессов — служб и демонов, — которые были запущены systemd, поскольку systemd обнаружил файл модуля, содержащий допустимый файл модуля. для них. Вот почему сокращенный термин для всех этих процессов — «единицы».

Существует возможность явного запроса systemctl для отображения единиц измерения, но поскольку это действие по умолчанию, оно используется нечасто.

Эти команды дают одинаковые результаты.

sudo systemctl list-units --type=service --state=running
sudo systemctl --type=service --state=running

Использование systemctl для отображения файлов модулей

Мы можем расширить область действия команды systemctl, включив параметр list-unit-files. Это не только отчет о запущенных службах и демонах, но и список всех файлов модулей , установленных на вашем компьютере.

systemctl list-unit-files --state=enabled

Отображается цветная таблица.

Удаление параметра state удаляет фильтрацию. Вывод будет содержать все установленные юнит-файлы, независимо от их состояния.

systemctl list-unit-files

Вывод будет содержать гораздо больше записей, чем результаты предыдущих команд.

На нашем тестовом компьютере список результатов почти в четыре раза длиннее, чем вывод наших предыдущих команд.

Если вы хотите использовать параметр state, вы можете использовать с ним несколько состояний, как мы видели ранее. Применяются те же правила. Укажите параметры в виде значений, разделенных запятыми, без пробелов.

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

systemctl list-unit-files --state=enabled,failed

Отображается уменьшенное количество результатов, отфильтрованных в соответствии с выбором, сделанным с помощью параметра состояния.

Детальное рассмотрение одной услуги

Если что-то об одной службе или демоне вызывает у вас интерес и заслуживает более глубокого изучения, вы можете подробно изучить его, используя параметр состояния systemctl.

Давайте посмотрим на демон SSH, sshd. Все, что нам нужно сделать, это использовать параметр состояния и имя службы или демона.

systemctl status sshd

Этот компактный дисплей показывает:

  • Название службы вместе с кратким описанием. Цветная точка показывает, работает он или нет. Зеленый цвет означает, что он запущен, красный – нет.
  • Что было загружено, включая путь к файлу модуля.
  • Сколько времени он работает.
  • Где документация находится в руководстве man.
  • Идентификатор процесса запущенного экземпляра.
  • Сколько одновременно запущенных экземпляров этой службы. Обычно это будет один.
  • Сколько памяти потребляется.
  • Сколько процессорного времени было использовано.
  • Контрольная группа, к которой принадлежит служба.

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

Автономные системы

Службы и демоны обеспечивают множество автоматических действий вашей операционной системы, поэтому они жизненно важны. Это означает, что их здоровье также жизненно важно.

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