Навигация по статье
Кратко
Linux работает благодаря множеству фоновых процессов: сервисов и демонов. В дистрибутивах с systemd встроенные команды позволяют узнать, какие службы сейчас активны, какие отключены, а какие не запустились как надо.
Что такое сервисы и демоны?
Сервисы и демоны — это фоновые процессы, работающие без участия пользователя, обычно они стартуют сразу при включении компьютера и не имеют своего интерфейса.
Раньше за запуск таких процессов отвечала система init, которая загружалась первой, а информация о сервисах хранилась в скриптах папки «/etc/init.d». Если у вас дистрибутив без systemd, всё работает именно так.
В системах с systemd за запуск и управление сервисами отвечает процесс systemd — он стартует самым первым. Описания сервисов теперь лежат в unit-файлах в директории «/usr/lib/systemd».
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 и смотрим первые пять строк.
В моём примере видно: первым стартует процесс systemd. Значит, ваш дистрибутив работает именно на systemd.
Управляем сервисами через systemctl: как быстро посмотреть всё и сразу
Для вывода списка всех сервисов и демонов есть команда systemctl. К ней можно добавить параметры type и state, чтобы, например, увидеть только сервисы, которые сейчас реально работают.
Перед вами развернётся подробная таблица. Если она не помещается в окне терминала, откроется стандартный просмотрщик, чаще всего less.
Перейти на правую часть таблицы — вправо на клавиатуре, вернуться — влево.
Чтобы выйти — просто нажмите Q. В таблице вы увидите название сервиса, его краткое описание, статус и прочую важную информацию.
Если ищете конкретный сервис, например, ssh, используйте grep: так можно быстро отфильтровать только нужное.
До этого мы использовали фильтр state=running, но systemctl поддерживает и другие состояния: dead, exited, failed, inactive, running и так далее.
Допустим, интересуют только сервисы, которые "упали":
Можно указать сразу несколько состояний через запятую без пробелов — отобразятся все сервисы, которые подходят под эти условия.
Если пролистать вправо, среди найденных процессов будут и завершённые, и сбойные.
Чаще всего systemctl выводит так называемые "юниты" — это процессы, созданные systemd на основе их unit-файлов. Поэтому их и называют юнитами.
Существует команда для показа списка юнитов напрямую, но в реальности она дублирует стандартный вывод — разницы не будет.
systemctl и все unit-файлы на ладони: секретов больше нет!
Можно расширить возможности systemctl с помощью параметра list-unit-files — тогда увидите не только активные процессы, а вообще все unit-файлы, которые есть на вашем компьютере.
Откроется большая таблица со всеми юнитами.
Если убрать фильтр по state, вы увидите абсолютно все unit-файлы, в каком бы они ни были статусе.
Количество записей становится ощутимо больше: у меня их получилось почти в четыре раза больше, чем в прошлый раз!
Если всё же хотите отфильтровать по состоянию, перечисляйте нужные параметры через запятую — без пробелов! Такой же принцип, как и у списка сервисов.
Вот пример: ищем только те unit-файлы, которые отключены или не смогли запуститься.
Список строк заметно короткий, потому что вывод уже фильтруется по нужным статусам.
Разбираем отдельный сервис: максимум информации в два шага!
Если какой-то сервис или демон ведёт себя странно, я сразу разбираюсь — смотрю подробности через systemctl и параметр status.
Например, хотим узнать, что сейчас происходит с демоном SSH (sshd). Всё просто: указываем status и имя сервиса.
На экране появится:
А в самом низу — ключевые события из системного журнала: например, когда сервис стартовал, сломался или выключился. Это очень помогает, если возникли проблемы с каким-либо демоном.
5 мощных консольных утилит для мониторинга ресурсов Linux
Потому что стандартных средств часто не хватает.
Автоматические системы Linux: почему от сервисов зависит всё
Сервисы и демоны — это "скелет" автоматизации Linux, их стабильная работа напрямую определяет, как ведёт себя система.
Узнать состояние сервисов, демонов и unit-файлов — дело пары кликов, зато такая проверка помогает не только отследить сбои, но и быстро диагностировать серьёзные проблемы в системе.
Если вам понравилась эта статья, подпишитесь, чтобы не пропустить еще много полезных статей!
Премиум подписка - это доступ к эксклюзивным материалам, чтение канала без рекламы, возможность предлагать темы для статей и даже заказывать индивидуальные обзоры/исследования по своим запросам!Подробнее о том, какие преимущества вы получите с премиум подпиской, можно узнать здесь
Также подписывайтесь на нас в:
- Telegram: https://t.me/gergenshin
- Youtube: https://www.youtube.com/@gergenshin
- Яндекс Дзен: https://dzen.ru/gergen
- Официальный сайт: https://www-genshin.ru