Служба 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
  1. Поскольку '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 моими собственными скриптами.

0 ответов

Другие вопросы по тегам