Systemd — система инициализации PID 1 и менеджер служб, используемый многими современными дистрибутивами. Проект systemd также предоставляет компоненты журналирования, устройств, входа, сети, времени и другие, но дистрибутивы сами выбирают внедряемые части.
Init · Урок 5
Обзор systemd
Узнайте, как systemd загружает units, разрешает зависимости, активирует targets и управляет системными и пользовательскими ресурсами.
Подтверждение работающего менеджера
Проверяйте живое состояние, а не наличие установленных каталогов:
$ 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 группировками и этапами, а не эксклюзивными состояниями.
Сохраните прогресс
Создайте бесплатный аккаунт, чтобы сохранить этот урок и продолжить на любом устройстве.
Создать бесплатный аккаунт