
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