fundo
Me pediram para criar um systemdscript para um novo serviço, foo_daemonque às vezes entra em "estado ruim" e não morre SIGTERM(provavelmente devido ao manipulador de sinal personalizado). Isso é problemático para os desenvolvedores, pois eles são instruídos a iniciar / parar / reiniciar o serviço via:
systemctl start foo_daemon.servicesystemctl stop foo_daemon.servicesystemctl restart foo_daemon.service
Problema
Às vezes, devido a foo_daemonentrar em um estado ruim, temos que matá-lo à força via:
systemctl kill -s KILL foo_daemon.service
Questão
Como posso configurar meu systemdscript para foo_daemonque, sempre que um usuário tentar parar / reiniciar o serviço systemd,:
- Tente desligar normalmente a
foo_daemonviaSIGTERM. - Dê até 2 segundos para que o desligamento / término
foo_daemonseja concluído. - Tente desligar a
foo_daemonviaSIGKILLse o processo ainda estiver ativo (portanto, não corremos o risco de o PID ser reciclado esystemdproblemasSIGKILLcom o PID errado). O dispositivo que estamos testando gera / bifurca-se rapidamente em vários processos, portanto , existe uma preocupação rara, mas muito real, com a reciclagem de PID, causando um problema. - Se, na prática, estou apenas paranóico com a reciclagem de PID, estou bem com o script emitido
SIGKILLcontra o PID do processo sem me preocupar em matar um PID reciclado.