Обзор systemd
100%

Init · Урок 5

Обзор systemd

Узнайте, как systemd загружает units, разрешает зависимости, активирует targets и управляет системными и пользовательскими ресурсами.

Systemd — система инициализации PID 1 и менеджер служб, используемый многими современными дистрибутивами. Проект systemd также предоставляет компоненты журналирования, устройств, входа, сети, времени и другие, но дистрибутивы сами выбирают внедряемые части.

Подтверждение работающего менеджера

Проверяйте живое состояние, а не наличие установленных каталогов:

$ ps -p 1 -o pid,comm,args=
$ systemctl is-system-running

/usr/lib/systemd/ может существовать при другом PID 1, а контейнер способен предоставлять собственное пространство PID. У systemctl также есть режимы пользовательского менеджера, удалённой системы и контейнера, поэтому определяйте цель операции.

Что наиболее прямо определяет systemd как системный менеджер init?

Units как управляемые объекты

Unit — именованная модель ресурса или действия systemd. Распространённые типы:

  • .service для процессов и демонов;
  • .socket для активации через сокет;
  • .mount и .automount для файловых систем;
  • .timer и .path для событийной активации;
  • .target для группировки и синхронизации;
  • .device, .swap, .slice и .scope для других ресурсов.

Состояние unit не всегда «running»: mount может быть смонтирован, timer — ждать, device — присутствовать, target — оставаться активным после достижения зависимостей.

Какой тип unit обычно группирует другие units и предоставляет точку синхронизации?

Пути загрузки units и переопределения

Системные units могут загружаться из путей дистрибутива и администратора:

  • /usr/lib/systemd/system/ — units пакетов во многих дистрибутивах;
  • /run/systemd/system/ — сгенерированная во время выполнения или временная конфигурация;
  • /etc/systemd/system/ — постоянная локальная конфигурация и переопределения администратора.

Точный путь поставщика может различаться. Более приоритетная локальная конфигурация переопределяет файл с тем же именем ниже. Предпочитайте drop-in через systemctl edit UNIT копированию и изменению целого файла поставщика, чтобы обновления пакета оставались видимыми.

Где обычно должны находиться постоянные локальные переопределения системных units?

Зависимости и порядок

Systemd строит транзакцию из связей зависимостей. Wants= и Requires= с разной силой добавляют другие units. Before= и After= задают порядок, если обе units запланированы, но сами по себе не запускают другую unit.

After=network.target не доказывает готовность соединения, DNS или конкретной удалённой точки. Службы должны применять подходящую интеграцию network-online либо собственные повторы и проверку готовности.

Что само по себе задаёт After=other.service?

Targets и транзакция загрузки по умолчанию

default.target обычно является псевдонимом target вроде multi-user.target или graphical.target. Systemd запускает транзакцию этой target и её зависимостей, позволяя независимой работе идти параллельно при соблюдении явного порядка.

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

Что обычно выбирает default.target?

Урок завершён

Вы завершили Обзор systemd

Теперь вы можете описать systemd через живые менеджеры, units и транзакции.

  • Подтверждать systemd через нужный PID 1 и соединение с менеджером.

  • Сопоставлять типы ресурсов суффиксам units.

  • Размещать локальные переопределения выше конфигурации поставщика.

  • Разделять силу зависимости, порядок и готовность приложения.

  • Считать targets группировками и этапами, а не эксклюзивными состояниями.

Сохраните прогресс

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

Создать бесплатный аккаунт
Следующий Урок
Назад к Init