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

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

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

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

[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 секунд, что я должен был бы увидеть, но этого не происходит, просто происходит crunch, и VNC-сервер останавливается. Так что последняя строка, конечно, запускается, но предыдущие две, похоже, не запускаются, или если и запускаются, то их не ждут — скрипт «stopsco» запускается примерно за 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

Связанный контент