Como manter o programa em execução após a desconexão do SSH? [duplicado]

15

Possíveis duplicatas:
mantenha um programa em execução após o fechamento de um console, após a inicialização do programa
Como posso usar o ssh para executar um comando em uma máquina Unix remota e sair antes que o comando seja concluído?

Oi!

Eu quero executar o programa do meu notebook por conexão SSH ao servidor remoto. O problema é que vou para casa com meu notebook :)

Como manter o programa em execução?

Máx.
fonte

Respostas:

22

'tela' provavelmente é o que você deseja. Ele permite que você desconecte e reconecte à vontade. Depois de efetuar o SSH no servidor, execute a tela antes de iniciar o programa. Ctrl-a, Ctrl-d irá desconectá-lo (o programa continua independentemente). Ao retornar, 'screen -r' reconectará você como se você nunca tivesse estado fora.

Pense nisso como VNC ou RDP para terminais de texto. Pesquise 'usando a tela' para muitos tutoriais.

Editado para adicionar: Atualmente, eu recomendaria o tmux , especialmente se usado em conjunto com o script tmx . A capacidade de dividir painéis (vertical e horizontalmente) e redimensioná-los é um enorme benefício para a tela.

Chris
fonte
5
Aliás, a tela continuará funcionando se sua conexão atingir o tempo limite ou algo assim enquanto você ainda estiver conectado a ela. Alguns comandos úteis: ctrl + a, ctrl + d = desconectar da tela, tela -r = reconectar a uma tela, tela -x = anexar a uma tela no modo compartilhado (pode ser usado para ensinar etc, dois usuários podem compartilhar na mesma tela), ctrl + a, esc = entra no modo de rolagem (pressione q para sair novamente). NOTA: Se você iniciar uma tela digitando "programa de tela", ele iniciará imediatamente o programa na tela, mas se sair, você perderá o buffer. Digitar apenas "tela" fornecerá um terminal persistente.
Chris, também tnx por uma resposta útil.
18

nohup é um comando que executará outro comando e o tornará imune ao sinal "hangup".

Você o executa da maneira mais simples:

nohup command

mas você também precisará redirecionar stdin, stdout e stderr. Veja a página de manual para mais informações.

Você provavelmente também vai querer colocá-lo em segundo plano.

Você também precisará conhecer o killcomando para eventualmente matá-lo.

Oddthinking
fonte
Sim, tnx muito! (fácil)))
Este é o que eu uso. Muito muito fácil Use teepara redirecionar stdin, stdout e stderr.
Ritwik Bose