Como posso criar um script de inicialização que inicie (e rastreie) o novo processo antes que o antigo seja completamente encerrado na reinicialização?
Estou desenvolvendo um serviço node.js que precisa ser capaz de reiniciar normalmente, por exemplo, na implantação de uma nova versão. O problema é que o serviço tem algumas tarefas de execução longa que precisam ser concluídas antes que o processo de serviço possa ser encerrado completamente, mas o novo processo deve ser lançado imediatamente.
Normalmente, ao desenvolver um serviço, eu criaria um simples script init-upstart iniciando um serviço como um usuário não privilegiado, executaria a implantação como o mesmo usuário não privilegiado e, no final do script de implantação, enviaria uma SIGINT para encerrar o serviço. serviço. O Upstart, em seguida, detectaria que o serviço foi finalizado e reiniciado a partir do código recém-implantado.
Desta vez, o serviço pode demorar até uma hora para desligar depois de receber o SIGINT e, portanto, eu preciso executar vários processos em paralelo e eu não acho que o upstart é projetado para isso.
Eu acho que eu poderia pular o upstart e apenas lançar o novo processo no script de deploy e desanexá-lo, mas isso significaria que eu perderia a auto-inicialização / reinício / start / stop que o upallart fornece, então eu preferiria não .
Tags upstart init service deployment