Служба systemd «oneshot» для запуска отключения питания

Решено: Это была предсказуемая проблема с именем сетевого интерфейса, переименование usb0 во что-то странное. Почему это произошло внезапно спустя годы? Я не знаю. Может быть, в первый раз USB-соединение уже было установлено при загрузке, поэтому система решила вести себя как многоинтерфейсная машина?

Так или иначе, проблема решена.

1
04.08.2017, 13:57
1 ответ
# trigger-poweroff.service
[Unit]
DefaultDependencies=no
Before=shutdown.target

[Service]
Type=oneshot
ExecStart=/usr/bin/systemctl --no-block poweroff

DefaultDependencies=noизбегает неявного Conflicts=shutdown.target. Это означает, что не имеет значения, запущена ли служба в режиме задания replace-irreversible. Это также позволяет избежать неявного Wants=sysinit.target; это было бы неоптимально, например. если вы хотите запустить эту службу после перехода на emergency.target.

Before=shutdown.targetгарантирует, что служба завершится до того, как systemd -shutdown начнет отправлять сигналы. По крайней мере, это упрощает анализ блока на правильность. Мы избегаем взаимоблокировки, следя за тем, чтобы служба не ждала завершения отключения питания.

Не имеет значения, если systemd-shutdownзавершит процесс systemctl с помощью SIGTERM. Процесс просто завершится со статусом WIFSIGNALи WTERMSIGиз SIGTERM. Systemd рассматривает это как чистый и успешный выход.См. определение SuccessExitStatus в man systemd.exec. Однако, если ядро ​​загадочным образом не запланировало этот первоначальный выход до завершения работы systemd DEFAULT_TIMEOUT_USEC, systemd -, оно отправило бы неблокируемый сигнал SIGKILL. Systemd не будет рассматривать это как успешный выход.

2
27.01.2020, 23:45

Теги

Похожие вопросы