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, no boot do sistema operacional, ele também começa correto. O problema está no desligamento do sistema operacional. Eu estou reiniciando e parece que se o ExecStop
WAS foi chamado também ... mas é tarde demais ... Eu vejo nos logs que todos os meus processos receberam um kill como eu posso ver nos 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 muito tarde porque alguém já matou os processos que eu originalmente iniciei. No entanto, eu já estou definindo Before=shutdown.target reboot.target halt.target
.
Acho que o problema pode ser que meu ExecStop
pode demorar mais do que o tempo limite padrão e, portanto, o systemd acaba enviando SIGTERM. Agora ... eu defini KillMode=none
, SendSIKKILL=no
e até todos os tempos limites possíveis para 5 minutos para TimeoutStopUSec
, TimeoutSec
e TimeoutStopSec
(com certeza meu ExecStop
leva menos de 5 minutos). / p>
Ainda sem sorte.
Alguma ideia de como posso corrigir isso? Eu estou rodando o CentOS 7.
Agradecemos antecipadamente