nohup múltiplos comandos seqüenciais não registrando saída

1

Eu tenho um script python (que leva muito tempo para concluir a execução) que preciso executar várias vezes, variando os parâmetros. E é executado em uma máquina remota. Por exemplo, e para fins de teste, use o seguinte script test.py :

import time

print("\nStart time: {}".format(time.ctime()))
time.sleep(10)
print("End time: {}".format(time.ctime()))

Para isso eu normalmente uso nohup . Funciona muito bem com uma única execução usando o seguinte comando:

nohup test.py &

As saídas são salvas corretamente no arquivo nohup.out . Para executar em sequência, fiz algumas pesquisas e encontrei [esta questão] [1] e criei o seguinte comando:

nohup $(python test.py; python test.py) &

O que funciona bem. Eu corro o comando, rapidamente saí e entro novamente e vi através de htop a primeira execução rodando, depois terminando e depois a segunda começando. Mas o problema é que a saída não foi salva no arquivo nohup.out . Se eu esperar no terminal para que ambas as execuções terminem, o seguinte erro é mostrado:

nohup: failed to run command 'Start': No such file or directory

O que estou fazendo de errado aqui?

PS.: Eu preciso registrar as saídas porque preciso ver o progresso atual do script e saber qual erro aconteceu se ele não terminar corretamente. Então, se houver algum outro comando para usar em vez de nohup , o qual poderia logar python print , ele será bem-vindo também.

    
por Hemerson Tacon 01.11.2018 / 22:18

1 resposta

1

O $(...) é resolvido primeiro, só então nohup . Ou seja quando você executa nohup $(python test.py; python test.py) & , isso é o que acontece:

  1. O shell executa $(...) , que retorna a string Start time ... e, em seguida,
  2. Executa nohup Start time ... , o que obviamente falha porque não existe tal comando Start .

Como nohup só pode executar um comando, essa é uma solução comum:

~ $ nohup sh -c "python test.py; python test.py" &

Então, você executa sh em nohup e, em seguida, executa os comandos desejados.

    
por 02.11.2018 / 02:51