systemctl отправляет запросы менеджеру systemd. Этот урок посвящён системным service units. До изменения состояния подтвердите точное имя unit, область менеджера, зависимости и эксплуатационное влияние.
Init · Урок 6
Цели systemd
Узнайте, как просматривать, переопределять, проверять, запускать, включать и диагностировать service units systemd.
Чтение 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 отдельными средствами постоянства.
Сохраните прогресс
Создайте бесплатный аккаунт, чтобы сохранить этот урок и продолжить на любом устройстве.
Создать бесплатный аккаунт