Найти в Дзене
Герман Геншин

Неочевидные фишки Linux: что скрывают ваши сервисы и демоны? Проверяем через systemctl — вы будете удивлены!

Оглавление

Кратко

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

Что такое сервисы и демоны?

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

Раньше за запуск таких процессов отвечала система init, которая загружалась первой, а информация о сервисах хранилась в скриптах папки «/etc/init.d». Если у вас дистрибутив без systemd, всё работает именно так.

В системах с systemd за запуск и управление сервисами отвечает процесс systemd — он стартует самым первым. Описания сервисов теперь лежат в unit-файлах в директории «/usr/lib/systemd».

-2

8 типов программ для терминала в Linux: сможете ли вы назвать их все?

Чем отличаются фильтры от TUI?

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

Но чтобы продолжать, для начала стоит выяснить: установлен ли у вас вообще systemd?

Как понять, на чём работает ваша система: init или systemd?

В большинстве популярных дистрибутивов Linux (например, Arch, Red Hat, Debian и их потомках) уже по умолчанию используется systemd. Тут же и Ubuntu, и все варианты Fedora, Manjaro, а также любые "форки" на базе Arch.

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

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

-3

В моём примере видно: первым стартует процесс systemd. Значит, ваш дистрибутив работает именно на systemd.

Управляем сервисами через systemctl: как быстро посмотреть всё и сразу

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

-4

Перед вами развернётся подробная таблица. Если она не помещается в окне терминала, откроется стандартный просмотрщик, чаще всего less.

-5

Перейти на правую часть таблицы — вправо на клавиатуре, вернуться — влево.

-6

Чтобы выйти — просто нажмите Q. В таблице вы увидите название сервиса, его краткое описание, статус и прочую важную информацию.

Если ищете конкретный сервис, например, ssh, используйте grep: так можно быстро отфильтровать только нужное.

-7

До этого мы использовали фильтр state=running, но systemctl поддерживает и другие состояния: dead, exited, failed, inactive, running и так далее.

Допустим, интересуют только сервисы, которые "упали":

-8

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

-9

Если пролистать вправо, среди найденных процессов будут и завершённые, и сбойные.

-10

Чаще всего systemctl выводит так называемые "юниты" — это процессы, созданные systemd на основе их unit-файлов. Поэтому их и называют юнитами.

Существует команда для показа списка юнитов напрямую, но в реальности она дублирует стандартный вывод — разницы не будет.

systemctl и все unit-файлы на ладони: секретов больше нет!

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

-11

Откроется большая таблица со всеми юнитами.

-12

Если убрать фильтр по state, вы увидите абсолютно все unit-файлы, в каком бы они ни были статусе.

-13

Количество записей становится ощутимо больше: у меня их получилось почти в четыре раза больше, чем в прошлый раз!

-14

Если всё же хотите отфильтровать по состоянию, перечисляйте нужные параметры через запятую — без пробелов! Такой же принцип, как и у списка сервисов.

Вот пример: ищем только те unit-файлы, которые отключены или не смогли запуститься.

-15

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

-16

Разбираем отдельный сервис: максимум информации в два шага!

Если какой-то сервис или демон ведёт себя странно, я сразу разбираюсь — смотрю подробности через systemctl и параметр status.

Например, хотим узнать, что сейчас происходит с демоном SSH (sshd). Всё просто: указываем status и имя сервиса.

На экране появится:

А в самом низу — ключевые события из системного журнала: например, когда сервис стартовал, сломался или выключился. Это очень помогает, если возникли проблемы с каким-либо демоном.

5 мощных консольных утилит для мониторинга ресурсов Linux

Потому что стандартных средств часто не хватает.

Автоматические системы Linux: почему от сервисов зависит всё

Сервисы и демоны — это "скелет" автоматизации Linux, их стабильная работа напрямую определяет, как ведёт себя система.

Узнать состояние сервисов, демонов и unit-файлов — дело пары кликов, зато такая проверка помогает не только отследить сбои, но и быстро диагностировать серьёзные проблемы в системе.

Если вам понравилась эта статья, подпишитесь, чтобы не пропустить еще много полезных статей!

Премиум подписка - это доступ к эксклюзивным материалам, чтение канала без рекламы, возможность предлагать темы для статей и даже заказывать индивидуальные обзоры/исследования по своим запросам!Подробнее о том, какие преимущества вы получите с премиум подпиской, можно узнать здесь

Также подписывайтесь на нас в: