Um script de shell em execução em um ssh pode continuar sendo executado se a instância do SSH for fechada? [duplicado]

4

Estou tentando escrever um script de shell que faz um longo trabalho em lote em um servidor remoto. Eu vou estar executando o script por SSH.

A questão é que pretendo começar o roteiro à noite e coletar os resultados na manhã seguinte; Eu preferiria não ter meu computador local funcionando a noite toda, já que não é necessário como parte do processo em lote. Como tal, existe uma maneira que eu possa fechar a conexão SSH e ainda ter o script de shell continuar a rodar no servidor remoto?

    
por SoItBegins 17.11.2013 / 21:17

2 respostas

1

Sim, se você iniciar o script para ser executado em segundo plano, ele continuará sendo executado. Como alternativa, você pode iniciar o script usando o comando na linha de comando. Por exemplo, você pode dizer:

ssh hostname -l loginname command

e isso vai funcionar.

    
por 17.11.2013 / 21:26
5

Uma maneira de fazer isso seria usar nohup. Aqui está um exemplo:

nohup your_prog.sh &

Isso executará o programa chamado your_prog.sh em segundo plano com & e redirecionará todas as saídas para um arquivo chamado nohup.out .

Agora, você pode monitorar a saída do programa em execução em segundo plano usando um comando como:

tail -f nohup.out

O programa que é iniciado com o comando nohup continuará sendo executado até ser finalizado por uma reinicialização ou por um comando kill explícito (ou até o programa sair).

    
por 17.11.2013 / 21:39