Служба systemd не будет вызывать ExecStop
Я уже потерял день, пытаясь запустить сценарий раньше, чем другие сценарии при выключении системы / перезагрузке / отключении питания. К сожалению, systemd используется в качестве подсистемы init в системе, с которой я работаю.
Что я сделал 1. Создал дополнительную цель, которая зависит от multi-user.target:
~$ cat /lib/systemd/system/last-service.target
[Unit]
Description=Last service(s) to start
Requires=multi-user.target
After=multi-user.target
AllowIsolate=yes
2. Создан сервис, который требуется last-service.target:
~$ cat /lib/systemd/system/shutdown-system.service
[Unit]
Description=Before power off
Requires=multi-user.targer
After=multi-user.targer
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/logger "XXXy will start now"
ExecStop=/usr/bin/logger "XXXz will poweroff now"
[Install]
WantedBy=last-service.target
- Поскольку 'sudo systemctl isolate last-service.target' ничего не сделал по какой-то причине, я заменил символическую ссылку /etc/systemd/system/default.target, чтобы она указывала на мой last-service.target.
Теперь, если я проверяю статус моей услуги / цели, я вижу:
~$ sudo systemctl -l status last-service.target
● last-service.target - Last service(s) to start
Loaded: loaded (/lib/systemd/system/last-service.target; enabled)
Active: active since Tue 2018-07-03 11:22:14 UTC; 36min ago
~$ sudo systemctl -l status shutdown-system.service
● shutdown-system.service - Before power off
Loaded: loaded (/lib/systemd/system/shutdown-system.service; enabled)
Active: active (exited) since Tue 2018-07-03 11:22:13 UTC; 36min ago
Process: 467 ExecStart=/usr/bin/logger XXXy will start now (code=exited, status=0/SUCCESS)
Main PID: 467 (code=exited, status=0/SUCCESS)
CGroup: /system.slice/shutdown-system.service
Таким образом, теоретически мой сценарий должен быть выполнен первым при poweroff / reboot, потому что он был запущен последним. Для меня это выглядит нормально, но systemd думает иначе, и я никогда не вижу "XXXz Poweroff сейчас" в системном журнале. Может кто-нибудь сказать мне, что я делаю неправильно или как еще я могу решить эту проблему?
Спасибо
ну и если это имеет значение
~$ systemd --version
systemd 215
+PAM +AUDIT +SELINUX +IMA +SYSVINIT +LIBCRYPTSETUP +GCRYPT +ACL +XZ -SECCOMP -APPARMOR
PS Я собираюсь отказаться и заменить символические ссылки reboot / shutdown / halt на systemctl моими собственными скриптами.