El servicio systemd ignora ExecStop al apagar pero funciona cuando se ejecuta manualmente

El servicio systemd ignora ExecStop al apagar pero funciona cuando se ejecuta manualmente

Buen día, intentando obtener un script esperado que ejecute una sesión de telnet al apagar una máquina virtual que se ejecuta en vmware player en una sesión de VNC. Funciona bien cuando ejecuto systemctl stop manualmente, pero cuando hago un apagado -r ahora, no sucede.

Mi archivo de servicio:

[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

Tengo entendido que las tres líneas ExecStop deben ejecutarse en orden, y lo hacen cuando ejecuto systemctl stop vncserver@:1.service. Pero cuando apago el servidor, no se ejecutan: el modo de suspensión 10 detendría el VNC. El servidor se cae durante 10 segundos, lo cual debería poder ver, pero no es así, simplemente falla y el servidor VNC se detiene. Así que la última línea se está ejecutando, con seguridad, pero las dos anteriores no parecen estarlo, o si lo están, no se están esperando: el script "stopsco" tarda unos 60 segundos en ejecutarse. ¿Alguien puede ver lo que me falta? Soy nuevo en systemd, esto funcionó bien con los scripts rc :)

Me he ocupado de la sugerencia aquí:systemd debe esperar a que se complete el comando antes de reiniciar/apagar o finalizar otros procesos y agregado

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

pero aún así cerró de golpe la sesión de VNC, ciertamente no esperó 10 segundos cuando ejecuté Shutdown -r, pero nuevamente, funciona perfectamente cuando se ejecuta manualmente.

Actualizar :

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 es la versión

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

información relacionada