Цели systemd
100%

Init · Урок 6

Цели systemd

Узнайте, как просматривать, переопределять, проверять, запускать, включать и диагностировать service units systemd.

systemctl отправляет запросы менеджеру systemd. Этот урок посвящён системным service units. До изменения состояния подтвердите точное имя unit, область менеджера, зависимости и эксплуатационное влияние.

Чтение service unit

Минимальный иллюстративный unit может выглядеть так:

[Unit]
Description=Example worker
Wants=network-online.target
After=network-online.target

[Service]
Type=exec
ExecStart=/usr/local/bin/example-worker
Restart=on-failure

[Install]
WantedBy=multi-user.target
  • [Unit] содержит описание и связи зависимостей.
  • [Service] определяет жизненный цикл процесса и поведение службы.
  • [Install] сообщает командам включения, какие псевдонимы или ссылки зависимостей создавать; это не автоматически активная зависимость времени выполнения.

ExecStart= по умолчанию не передаётся оболочке. Конвейеры, перенаправления, переменные и кавычки работают не как в интерактивной командной строке, если явно не вызвана оболочка.

Каково основное назначение директив [Install], например WantedBy=?

Просмотр эффективной конфигурации

Выведите загруженные units:

$ systemctl list-units --type=service

Выведите установленные unit-файлы и состояния включения:

$ systemctl list-unit-files --type=service

Это разные представления: unit-файл может быть включён, но неактивен; активен, но отключён; static, generated, transient, masked либо отсутствовать в одном списке. Посмотрите объединённое содержимое поставщика и drop-in:

$ systemctl cat UNIT.service
$ systemctl show UNIT.service

Что показывает list-unit-files, чего прежде всего не показывает list-units?

Создание локального переопределения

Используйте drop-in вместо редактирования пакетного unit:

$ sudo systemctl edit UNIT.service

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

$ sudo systemctl daemon-reload

daemon-reload перечитывает определения units и перестраивает зависимости. Он не перезагружает конфигурацию приложений и не перезапускает службы. При необходимости проверьте синтаксис и зависимости через systemd-analyze verify, затем просмотрите итоговый объединённый unit.

Что делает systemctl daemon-reload?

Текущее состояние службы

После проверки конфигурации и сохранения аварийного доступа:

$ sudo systemctl start peanut.service
$ sudo systemctl stop peanut.service
$ sudo systemctl restart peanut.service
$ sudo systemctl reload peanut.service

reload успешен только при определённом или поддерживаемом действии перезагрузки. restart прерывает процесс и может не восстановить службу. Для удалённого доступа, сети, хранилища и аутентификации сохраняйте отдельный консольный путь и проверяйте конфигурацию заранее.

Проверьте состояние и журналы:

$ systemctl status peanut.service
$ systemctl is-active peanut.service
$ journalctl -u peanut.service -b

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

Какая команда запускает peanut.service сейчас, сама по себе не меняя будущее включение?

Включение, отключение и маскирование

Управляйте будущими ссылками зависимостей:

$ sudo systemctl enable peanut.service
$ sudo systemctl disable peanut.service

Enable не запускает unit без --now, а disable не останавливает работающую unit без --now. У static unit может не быть установочных метаданных, но она всё равно активируется как зависимость другой unit.

Mask связывает unit с /dev/null и блокирует обычную активацию, включая зависимую, до unmask. Это сильнее disable и способно сломать зависимые компоненты; сначала изучите обратные зависимости.

Что происходит с уже работающей службой после systemctl disable UNIT без --now?

Проверка результата службы

После изменения проверяйте состояние процесса, недавние журналы, слушающие конечные точки, зависимые units, здоровье приложения и поведение после контролируемой перезагрузки, если менялось включение. По ситуации используйте systemctl is-failed, systemctl list-dependencies и родные проверки приложения.

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

Вы завершили Цели systemd

Теперь вы можете управлять службой systemd, не путая конфигурацию, текущее состояние и включение.

  • Читать [Unit], [Service] и [Install] по разным ролям.

  • Сравнивать состояние загруженных units и установленных unit-файлов.

  • Использовать drop-in и перечитывать менеджер после внешних изменений файлов.

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

  • Считать enable, disable и mask отдельными средствами постоянства.

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

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

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