
Bom dia, tentando obter um script esperado que execute uma sessão telnet para ser executado no desligamento de uma VM em execução no VMware Player em uma sessão VNC. Funciona muito bem quando executo systemctl stop manualmente, mas quando faço um shutdown -r agora, isso não acontece.
Meu arquivo de serviço:
[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
Entendo que as três linhas ExecStop devem ser executadas em ordem, e o fazem quando eu executo systemctl stop vncserver@:1.service Mas quando eu desligo o servidor, elas não são executadas - o sleep 10 pararia o VNC o servidor fica inativo por 10 segundos, o que eu deveria conseguir ver, mas isso não acontece, ele simplesmente trava e o servidor VNC para. Portanto, a última linha está sendo executada, com certeza, mas as duas anteriores não parecem estar, ou se estão, não estão sendo esperadas - o script "stopsco" leva cerca de 60 segundos para ser executado. Alguém pode ver o que estou perdendo? Sou novo no systemd, esse material funcionou bem com scripts rc :)
Eu me preocupei com a sugestão aqui:systemd para aguardar a conclusão do comando antes de reiniciar/desligar ou encerrar outros processos e acrescentou
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
Before=shutdown.target reboot.target halt.target
mas ainda assim fechou a sessão VNC, certamente não esperou 10s quando executei shutdown -r, mas, novamente, funciona perfeitamente quando executado manualmente.
Atualizar :
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 é a versão
systemctl --version
systemd 219
+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN