Não é bem assim que o SIGTERM não está funcionando, é que o aplicativo não reage do jeito que você está esperando. Geralmente, o objetivo de capturar o SIGTERM é fazer alguma limpeza, como sincronizar dados para o disco, etc., antes de sair.
Não há exigência forçada, no entanto, de que o processo realmente saia, portanto, se algo der errado durante o que quer que seja em resposta, não.
SIGKILL ( kill -9
), por outro lado, não pode ser capturado e deve forçar o processo a parar a menos que por alguma razão muito incomum ele seja ininterrupto (uma razão que não poderia produzir voluntariamente) . O problema com isso é que o processo não pode reagir e fazer pequenas coisas que ele precisa fazer antes de desligar. Isso pode significar que ele deixou dados no disco em um estado inconsistente, etc.
Assim, a maneira normal e preferida de matar um processo é SIGTERM. Somente se isso falhar você deve recorrer ao SIGKILL e, nesse caso, você deve se perguntar por que é necessário, porque um aplicativo que funcione corretamente não deve precisar disso. Em outras palavras ...
Could this be a bug in the application code
Sim.