Назад | Перейти на главную страницу

служба systemd игнорирует ExecStop при завершении работы, но работает при запуске вручную

Добрый день, пытаюсь получить сценарий ожидания, который запускает сеанс telnet для запуска при завершении работы виртуальной машины, запущенной в проигрывателе vmware в сеансе VNC. Он отлично работает, когда я запускаю systemctl stop вручную, но когда я делаю shutdown -r сейчас, этого не происходит.

Мой служебный файл:

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
Before=shutdown.target reboot.target halt.target

[Service]
Type=forking

# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/sbin/runuser -l root -c "/usr/bin/vncserver %i"
PIDFile=/root/.vnc/%H%i.pid
ExecStop=/root/vmware/SCO/stopsco.pl
ExecStop=/usr/bin/sleep 10
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

[Install]
WantedBy=multi-user.target

Насколько я понимаю, три строки ExecStop должны запускаться по порядку, и они запускаются, когда я запускаю systemctl stop vncserver @: 1.service Но когда я выключаю сервер, они не запускаются - sleep 10 остановит VNC сервер отключается на 10 секунд, что я должен видеть, но этого не происходит, он просто ломается, и сервер VNC останавливается. Таким образом, последняя строка наверняка выполняется, но две предыдущие, похоже, не работают, а если и есть, то их не ждут - запуск сценария "stopco" занимает около 60 секунд. Кто-нибудь может увидеть, что мне не хватает? Я новичок в systemd, этот материал отлично работал со сценариями rc :)

Я возился с предложением здесь: systemd ждать завершения команды перед перезапуском / выключением или завершением других процессов и добавил

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
Before=shutdown.target reboot.target halt.target

но он все равно просто закрыл сеанс VNC, он определенно не ждал 10 секунд, когда я запускал shutdown -r, но опять же, он отлично работает при запуске вручную.

Обновить :

systemctl status vncserver@:1.service
▒ vncserver@:1.service - Remote desktop service (VNC)
   Loaded: loaded (/etc/systemd/system/vncserver@:1.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2018-09-12 00:42:04 AEST; 9h ago
  Process: 3867 ExecStop=/bin/sh -c /usr/bin/vncserver -kill %i > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)
  Process: 3864 ExecStop=/usr/bin/sleep 10 (code=exited, status=0/SUCCESS)
  Process: 3831 ExecStop=/root/vmware/SCO/stopsco.pl (code=exited, status=0/SUCCESS)
  Process: 3968 ExecStart=/usr/sbin/runuser -l root -c /usr/bin/vncserver %i (code=exited, status=0/SUCCESS)
  Process: 3963 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill %i > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)
 Main PID: 4002 (Xvnc)
   CGroup: /system.slice/system-vncserver.slice/vncserver@:1.service
           ▒ 4002 /usr/bin/Xvnc :1 -auth /root/.Xauthority -desktop tardis.li...

                                                                               Sep 12 00:42:01 tardis.lilydaleairport.com.au systemd[1]: Starting Remote des...
Sep 12 00:42:04 tardis.lilydaleairport.com.au systemd[1]: Started Remote desk...
Hint: Some lines were ellipsized, use -l to show in full.
[root@tardis system]#

systemd - это версия

systemctl --version
systemd 219
+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN