O fechamento do Terminal interrompe a execução remota de scripts?

0

Eu tenho NAS (rodando Linux) e Macbook. E se eu iniciar o aplicativo do Terminal OSX, conectar-me ao meu NAS através do telnet e executar algum script:

python myscript.py > log.txt

Ele continuará a ser executado quando eu fechar a janela do Terminal? Como devo executar o script para continuar sua execução após o encerramento do Terminal? Como ver o progresso da execução do script nesse caso (se não redirecionar sua saída para algum arquivo)?

    
por LA_ 05.01.2015 / 21:49

2 respostas

1
  • "Ele continuará a ser executado quando eu fechar a janela do Terminal? ": NÃO , mas isso acontece porque você iniciou seu myscript.py nesse específico caminho;

  • "Como devo executar o script para continuar sua execução após o encerramento do Terminal" : você pode prefixar o comando com NOHUP, para explicitamente dizer ao seu programa para ignorar o HUP será recebido (se o terminal de controle estiver fechado). Além disso, se o programa estiver no estado de Suspensão Ininterrupta , ele continuará ... dormindo ( recusando qualquer tentativa de matar), independentemente de tudo;

  • "Como ver o progresso da execução do script em tal caso (se não redirecionar sua saída para algum arquivo)?" : a execução por si só pode ser verificada com o "ps" normal, "top", etc .; O progresso da execução pode ser monitorado principalmente exclusivamente através de mensagens de rastreamento específicas do seu aplicativo (como, por exemplo, escrever mensagens de rastreamento / log no SYSLOG).

Tendo dito tudo isso, peço que você verifique a esta pergunta do ServerFault, que trata da conexão SSH remota: Tenho certeza de que as coisas são absolutamente as mesmas quando você está se conectando remotamente via telnet, já que problemas de pseudo / terminal de controle (que são o principal fator determinante da vida útil dos processos filho do shell) são os mesmos em conexões remotas SSH e TELNET.

    
por 05.01.2015 / 22:10
2

Não continuará a ser executado.

Você precisará usar algo como tela para executá-lo em um terminal virtual que você pode reconectá-lo ou executá-lo como um cron job , que pode ser executado em segundo plano.

    
por 05.01.2015 / 22:10