
Eu tenho um script systemd que é o seguinte:
[Unit]
Description=My sites
Before=shutdown.target reboot.target halt.target
[Service]
Type=oneshot
ExecStart=/bin/bash -c '/etc/xxx/mySites start'
ExecStop=/bin/bash -c '/etc/xxx/mySites stop'
KillMode=none
SendSIGKILL=no
TimeoutStopUSec=5min
TimeoutSec=5min
TimeoutStopSec=5min
[Install]
WantedBy=multi-user.target
Agora... se eu tentar executar, sudo systemctl start mySites.service
parece que o serviço foi executado e todas as minhas coisas foram iniciadas corretamente. Se eu fizer um, stop
também funciona. Então, na inicialização do sistema operacional, ele também inicia corretamente. O problema está no desligamento do sistema operacional. Estou reiniciando e parece que o ExecStop
WAS também foi chamado... mas tarde demais... vejo nos logs que todos os meus processos foram eliminados, como posso ver em meus logs:
signal 15, SIGTERM, received from process 1 userId 0
si_code: 0, SI_USER, signal from kill(2), sigsend(2), raise(3C) or abort(3C)
si_signo 15 si_errno 0
Então .. ExecStop
parece estar sendo chamado tarde demais porque alguém já eliminou os processos que iniciei originalmente. No entanto, já estou configurando Before=shutdown.target reboot.target halt.target
.
Acho que o problema pode ser que meu ExecStop
tempo limite pode demorar mais que o padrão e, portanto, o systemd acaba enviando SIGTERM. Agora ... eu configurei KillMode=none
e SendSIKKILL=no
até mesmo todos os tempos limite possíveis para 5 minutos para e TimeoutStopUSec
( com certeza leva menos de 5 minutos).TimeoutSec
TimeoutStopSec
ExecStop
Ainda sem sorte.
Alguma ideia de como posso consertar isso? Estou executando o CentOS 7.
Desde já, obrigado,
Responder1
Tentar
[Unit]
Description=My sites
After=NetworkManager.service
Requires=NetworkManager.service
[Service]
Type=oneshot
ExecStart=/bin/bash -c '/etc/xxx/mySites start'
ExecStop=/bin/bash -c '/etc/xxx/mySites stop'
RemainAfterExit=true
[Install]
WantedBy=multi-user.target