Método correto de utilização de nohup no processo em lote

2

Qual seria o melhor método de usar o nohup em um script em lote com várias chamadas dentro do script.

Por exemplo, eu tenho um script chamado filebuilder.sh e contém algo como:

/usr/bin/python buildFile.py fileA
/usr/bin/python buildFile.py fileB
/usr/bin/python buildFile.py fileC

O que eu quero fazer é garantir que, se eu executar meu script, ele continuará mesmo que minha sessão SSH seja encerrada. Devo apenas chamar o script assim:

nohup filebuilder.sh

ou coloque nohup antes de cada entrada no arquivo, como:

nohup /usr/bin/python buildFile.py fileA
nohup /usr/bin/python buildFile.py fileB
nohup /usr/bin/python buildFile.py fileC 

ou ambos? Se eu colocá-lo apenas no script, é possível que uma das chamadas do python ainda possa falhar em um sinal de terminação? Qual é a melhor prática e qual solução atenderá aos meus requisitos? Existe uma alternativa melhor?

    
por Dave Johnshon 23.10.2012 / 23:04

1 resposta

0

Colocar nohup em cada linha não é a resposta. Se você fizer isso e a sessão for encerrada, o programa em execução será executado até a conclusão, mas o script será encerrado sem concluir. nohup filebuilder.sh funcionará, mas você deve se lembrar disso sempre. Algumas soluções:

1. Escreva filebuilder.sh para dizer

    exec nohup name_of_the_real_filebuilder.sh

2. Coloque

    trap "" 1

no início do seu script. (1 é o valor numérico do sinal de "desconexão").

    
por 24.10.2012 / 01:29