Percebi que você já corrigiu o problema, corrigindo a linha exec
. Para futuros leitores, vamos resumir o problema e a correção.
Problema : a execução de um python de bifurcação de um script bash do trabalho do Upstart não é rastreada corretamente.
Problema : expect fork
ou expect daemon
não corrige o problema.
Solução : corrija o script. Opções:
-
Mude de
exec /usr/bin/my-bash-wrapper
para chamar diretamente pythonexec python /path/to/script
(conforme demonstrado nos comentários acima) -
Corrija o script bash. Ter um script bash com conteúdo de exemplo de
#!/bin/bash python /path/to/script
tem o problema de python ser executado separadamente do bash com um novo id de processo. Portanto, ele é ignorado pelo Upstart, já que é apenas um comando criado pelo script Bash. Adicionar expect daemon
não ajuda, pois é ignorado em primeiro lugar.
O uso do script bash é possível da mesma maneira que você o corrigiu no script Upstart. Prefixar a chamada python com exec
faz o python rodar com o mesmo PID do bash, que é rastreado pelo Upstart. Então expect fork
pega o fork () no script Python, e o Upstart está acompanhando o processo certo.
Então, usando um wrapper bash de:
#!/bin/bash exec python /path/to/script
faz a mesma coisa.