Systemd: полное руководство для сисадминов

08.09.2025
0
23
---

Зачем нужен systemd

Раньше в Linux использовался SysVinit: скрипты запускались последовательно, зависшие службы нельзя было нормально отследить, логов в едином месте не было.
Systemd появился в 2010-м и решил все эти проблемы. Сегодня он используется почти во всех дистрибутивах Linux.

Systemd объединяет управление службами, ресурсами и логами в единый механизм. Это делает Linux-систему быстрее, прозрачнее и удобнее для администрирования.

Из чего состоит systemd

Systemd — это не одна программа, а целый набор инструментов:

  • systemd (PID 1) — главный процесс, управляющий всем остальным;

  • systemctl — утилита для управления;

  • journald — единая система журналирования;

  • отдельные сервисы для управления сетью, временем, пользователями и оборудованием.

Юниты

В systemd всё завязано на юниты (unit). Это конфигурационные файлы, которые описывают службы, таймеры, точки монтирования и другие объекты системы.
Основные типы:

  • .service — процессы и демоны;

  • .socket — запуск по сокету;

  • .timer — планировщик (замена cron);

  • .path, .mount, .target — контроль файлов, точек монтирования, состояний системы.

Структура юнита:

  • [Unit] — описание и зависимости;

  • [Service] — как именно запускать процесс;

  • [Install] — как он привязывается к целям (target).


Типы сервисов

Через параметр Type= можно настроить поведение:

  • simple — процесс считается запущенным сразу;

  • forking — для классических демонов, которые "отделяются";

  • oneshot — однократные действия;

  • notify — сервис сам сообщает, что готов;

  • dbus — службы, работающие через D-Bus.

Зависимости и параллелизм

Systemd строит граф зависимостей между юнитами и запускает их максимально параллельно. Это ускоряет загрузку системы и делает её более управляемой.

Контроль ресурсов через cgroups

Каждая служба работает в своей cgroup, что позволяет:

  • отслеживать все её процессы;

  • ограничивать память, CPU и другие ресурсы;

  • гарантированно убивать всё, что связано с юнитом;

  • анализировать нагрузку через systemd-cgls и systemd-cgtop.

Журналы

Вместо разрозненных логов systemd использует journald:

  • бинарный формат с метаданными (PID, юнит, команда и др.);

  • просмотр через journalctl с фильтрацией по времени, уровню и сервисам;

  • удобный анализ ошибок прямо в терминале.

D-Bus

Все утилиты (включая systemctl) общаются с systemd через D-Bus — это единый и безопасный канал обмена сообщениями.

Основные команды

  • Управление сервисами:
    systemctl start/stop/restart/reload <unit>

  • Проверка:
    systemctl status <unit>

  • Автозагрузка:
    systemctl enable/disable <unit>

  • Ошибки:
    systemctl --failed

  • Логи:
    journalctl -u <unit>, journalctl -f

  • Время загрузки:
    systemd-analyze и systemd-analyze blame

Понравиласть статья? Жми лайк или расскажи своим друзьям!
Теги к новости:
Linux, System Administrator, Ubuntu
Комментарии
Добавить комментарий
Добавление комментария
Ваше Имя:
Ваш E-Mail:
Это код:
Кликните на изображение чтобы обновить код, если он неразборчив
Введите сюда: