Como posso garantir que um serviço systemd seja executado antes do fechamento do servidor SSH?

0

Eu fiz um serviço systemd , que realiza algumas ações antes que a máquina seja desligada. Seu arquivo de unidade é:

[Unit]
Before=shutdown.target
DefaultDependencies=no

[Service]
Type=simple
ExecStart=/opt/demo.sh
TimeoutSec=infinity

[Install]
WantedBy=shutdown.target

Atualmente, o script é executado antes que a máquina perca a conexão de rede, mas após as conexões SSH serem fechadas, e se eu tentar reconectar, ela falhará com o erro “Conexão recusada”. Eu preferiria manter a conexão SSH até que o script seja encerrado (por exemplo, para poder tail -f /var/log/syslog sua execução).

Como faço para forçar a execução do script antes do fechamento do servidor SSH?

    
por Arseni Mourzenko 05.10.2016 / 20:13

1 resposta

1

Você pode obter o resultado desejado usando uma unidade do systemd conforme abaixo:

[Unit]
Description=Service to run on shutdown before any other services
After=default.target

[Service]
Type=oneshot
ExecStart=/bin/true
ExecStop=/opt/demo.sh
RemainAfterExit=yes
TimeoutStopSec=0

[Install]
WantedBy=default.target

Os serviços do systemd stop são baseados em sua dependência em ordem reversa. Portanto, o serviço acima começa /bin/true depois que o sistema atingiu default.target e seu script /opt/demo.sh em parar / desligar. Com base em sua exigência, você desejaria ajustar TimeoutStopSec , atualmente está definido para nunca tempo limite (em vez de 90 segundos padrão)

    
por 06.10.2016 / 19:00

Tags