Usar exec
para iniciar o processo é bom, mas ao pará-lo, se você precisar executar um script específico ou um conjunto de comandos, poderá usar a sub-rotina pre-stop
.
pre-stop exec shutdown.sh
Suponho que você tenha tentado apenas usar uma estrofe exec e não funcionou, possivelmente porque seu daemon requer alguma limpeza especializada. Observe que daemons bem comportados devem receber um sinal de upstart quando o trabalho é interrompido, e se eles lidarem com o sinal apropriadamente, nenhuma limpeza adicional deve ser necessária.
Parar um trabalho envolve enviar SIGTERM para ele. Se houver alguma coisa que precisa ser feito antes do SIGTERM, faça aqui. Indiscutivelmente, serviços deve lidar com SIGTERM muito graciosamente, então isso não deveria ser necessário.
se houver algo crítico, como um flush no disco, e aumentar o kill tempo limite não é uma opção, pré-parada não é um mau lugar para fazer isso
Leia também esta seção para todo o fluxo de trabalho do que acontece quando você para um trabalho. Observe quando a pré-parada é executada e como um sinal é enviado ao processo posteriormente, que é como o upstart lida com a interrupção de trabalhos normalmente.
Minha fonte é o livro de receitas oficial do Upstart em: link