Desligando o PC sem matar as sessões SSH

14

Eu tenho alguns processos pesados ​​e longos executando em máquinas Linux remotas. Eu uso meu laptop para fazer o SSH nessas máquinas e executar os processos do meu sofá.

MAS, quando quero desligar meu laptop, estou com problemas, pois os processos remotos são interrompidos.

Eu fiz minha pesquisa e descobri que "tela" é uma ótima solução para mim, é! (Contanto que eu não desligue meu laptop). Não existe uma maneira de "persistir" as sessões de "tela" para que eu possa desligá-lo e reconectá-lo a uma sessão?

Sathyajith Bhat
fonte
Você está executando a tela nos sistemas Linux remotos?
Sam Miller
é possível embasar os processos?
ennuikiller

Respostas:

32

Parece que você está executando a sessão de tela no seu laptop. Depois, faça o sshing dessa sessão de tela para o (s) host (s) remoto (s). Desligar o laptop mata o processo de tela local, que por sua vez mata a sessão ssh.

O que você quer fazer é ssh do seu laptop para o (s) host (s) remoto (s). Em seguida, inicie uma sessão de tela no host remoto. Quando o laptop é desligado, a sessão ssh desaparece, mas a sessão na tela remota persiste.

Na próxima vez que você fizer login no sistema remoto, poderá reconectá-lo à sessão de tela com "screen -r" ou se tiver várias sessões de tela "screen -r <pid>".

Nota: se você esqueceu de se desconectar da sessão de tela remota antes que o ssh seja morto, a sessão de tela pode pensar que ainda está anexada. Nesse caso, você precisará executar "screen -dr <pid>" para desanexar a sessão primeiro.

erichui
fonte
4
By the way, se bem me lembro, pressionar Ctrl+Aseguido por Dquando você estiver screenirá desanexar a sessão da tela.
David Z
@ David, isso está correto, você também pode fechar seu terminal ou sessão ssh e a tela permanecerá aberta. "screen -raAd" será anexado novamente.
Chris
Como posso iniciar uma sessão de tela no host remoto?
stupidity
15

Você pode usar nohuppara iniciar um processo que continuará em execução após o logoff de uma máquina. Isso pode ser o que você está procurando.

JohnSmith
fonte
Para um processo já em execução, você pode executar ^ Z e, em seguida, disowncriar o que acredito ser um efeito equivalente. disowné um basismo que pode ou não estar disponível em outras conchas.
intuited
+1 para nohup. O problema ^Zé que ele interrompe o processo. Não há como ter um processo em segundo plano, mas mantenha-o funcionando sem problemas.
detly
6

Se você iniciar a sessão remota screen, poderá desligar o seu laptop com segurança.

chryss
fonte
Não tenho certeza se é universalmente óbvio que a sessão de tela desconectada deve estar no servidor remoto.
intuited
6

O ponto da tela é executá-lo no servidor e desanexar com CTRL+ A+ D.

Peter Mortensen
fonte
2

Use nohup. Outra opção para usar o VNC. Crie uma sessão VNC no servidor. Em seguida, conecte-o sempre que trabalhar. (Mais útil quando o longo processo está usando alguma GUI - uma IDE, por exemplo)

Jayan
fonte
0

Se esses servidores tiverem um KVM remoto da ILO / DRAC / Other, etc, você poderá se conectar ao console e interagir lá. Como as sessões iniciadas são essencialmente locais, interromper a conexão do seu laptop não fará nada.

DHayes
fonte