CentOS7 systemctl chamando ExecStop na reinicialização depois que meus processos já estão mortos

3

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

    
por Mariano Martinez Peck 20.02.2015 / 15:20

1 resposta

-1

Tente

[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
    
por 10.03.2015 / 21:46