Às vezes, tenho processos de execução longa que quero iniciar antes de ir para casa, por isso crio uma sessão SSH no servidor para iniciar o processo, mas quero fechar meu laptop e voltar para casa e, depois do jantar, quero verifique o processo que iniciei antes de sair do trabalho. Como posso fazer isso com o SSH? Meu entendimento é que, se você interromper sua conexão SSH, também interromperá sua sessão de login no servidor, interrompendo, portanto, o longo processo de execução.
command-line
ssh
process
gnu-screen
λ Jonas Gorauskas
fonte
fonte
nohup
intercepta o SIGHUP para que, quando o shell que o executou, saia e envie o SIGHUP para todos os seus filhos ainda em execução,long-running-process
não morra.disown
simplesmente remove o trabalho especificado da lista de filhos de Bash, para que ele não tente enviar o SIGHUP.nohup
é um programa separado do shell, portanto, funciona com todos os shells, enquanto quedisown
é um Bash embutido.nohup
aceita o comando para execução, enquanto quedisown
só funciona após o trabalho ser iniciado e você o coloca em segundo plano para que possa voltar ao shell.tail -f nohup.out
para verificar o que está acontecendo quando você voltar.Você quer usar o GNU Screen. É super incrível!
CTRL+ a, dpara se destacar da sua sessão na tela
Quando você volta ao seu laptop:
Então confira o andamento do seu processo de longa execução!
screen
é uma ferramenta muito abrangente e pode fazer muito mais do que eu descrevi. Enquanto estiver em uma sessão de tela, tente ctrl + a ,? para aprender alguns comandos comuns. Provavelmente os mais comuns são:screen -d -r
para garantir que, se outro shell estiver conectado à minha sessão de tela, ele será desanexado antes de continuar no meu sistema atual.fonte
screen -S name
e deixe seu outro amigo se conectar a elascreen -x name
.tmux
withtmuxinator
é uma ótima combinação para configurações sofisticadas, enquanto eu prefiroscreen
como uma solução rápida e simples.Se você não tiver planejado com antecedência e configurado
screen
, etc., faça o seguinte:Se o seu processo estiver em execução em segundo plano: vá para o 3, caso contrário:
Ctrl-Z
suspenda o processo em primeiro plano. Isso informará o número da tarefa do processo suspenso, por exemplo:Envie
processName
para o segundo plano combg %1
(usando o número de trabalho que está seguindo o%
). Isso será retomadoprocessName
em segundo plano.Rejeite
processName
comdisown %1
oudisown PID
. Use o-h
sinalizador se desejar manter a propriedade até encerrar seu shell atual.fonte
&
quando o iniciei. Isso parece funcionar muito bem!O que você deseja usar é a tela ou, melhor ainda, um invólucro fácil de usar na tela chamado byobu.
Tela permite executar várias sessões de terminal virtual na mesma sessão ssh. Um tutorial e páginas de ajuda estão disponíveis.
O byobu é um invólucro que permite abrir facilmente novas telas com uma simples tecla de função em vez da combinação de teclas de ctrl-a. Também mostra uma linha de status com todos os terminais virtuais abertos que podem ser nomeados.
Outro recurso interessante é o fato de que toda a tela pode permanecer ativa enquanto a conexão ssh estiver desconectada. Você acabou de se conectar novamente via ssh e chamar byobu e tudo está como antes.
Finalmente algumas capturas de tela do byobu.
fonte
Pode valer a pena notar que
ssh -t lala screen -rxU moo
será anexado à sessão MOO no host lalassh -t lala screen -S moo
criará a sessão MOO no host lalae
ssh -t lala screen -S moo quux
criará a sessão MOO no host lala e executará o programa quux , encerrando a sessão após a conclusão.fonte
Pergunta antiga, estranha ainda ninguém aconselhou o tmux , que funciona como um invólucro para n consoles e os mantém abertos até que seja necessário. Isso permite mais controle, além de várias funções que o tmux possui. É fácil gerenciá-lo, basta executar o tmux, que o traz em seu shell, iniciar seu trabalho mais demorado, depois pressionar ctrl + b seguido de d (desanexar) (
ctrl+b
é o "ok google" do tmux ed
é o comando para fechar sem saída do shell). Isso realmente funciona se você apenas fechar, por exemplo, massa de vidraceiro. Após o jantar, quando você se conectar novamente, poderá reabrir o tmuxtmux attach
para ver sua tela exatamente como saiu. Algo que amo é o painel de divisão:ctrl+b
e pressione"
. Para mudar de um painel para outroctrl+b
e pressione a seta para cima / para baixo.fonte
Você pode encontrar um bom guia aqui: Mantenha sua sessão SSH em execução ao desconectar
Agora você pode iniciar uma nova sessão de tela digitando a tela na linha de comando. Você verá algumas informações sobre a tela. Pressione enter e você estará em um prompt normal.
Para desconectar (mas deixar a sessão em execução) Pressione Ctrl+ Ae depois Ctrl+ Dem sucessão imediata. Você verá a mensagem [desanexada]
Para reconectar-se a uma sessão já em execução
Para reconectar-se a uma sessão existente ou criar uma nova, se nenhuma existir
Para criar uma nova janela dentro de uma sessão de tela em execução Hit Ctrl+ Ae, Cem seguida, em sucessão imediata. Você verá um novo prompt.
Para passar de uma janela de tela para outra Hit Ctrl+ Ae, em seguida, Ctrl+ Aem sucessão imediata.
Para listar janelas de tela aberta Hit Ctrl+ Ae, Wem seguida, em sucessão imediata
fonte
<kbd>Ctrl</kbd>
para mostrar os nomes como teclas do teclado.Eu uso o NX NoMachine, que é gratuito para mim porque sou apenas eu. Essencialmente, ele executa uma sessão X no servidor à qual você pode se conectar e desconectar repetidamente. A sessão X continua em execução quando você não está conectado. As conexões podem ser feitas de qualquer lugar. Você pode escolher entre janelas flutuantes ou uma única janela contendo toda uma área de trabalho (por exemplo, uma área de trabalho completa do Gnome). O cliente (que você executaria no seu laptop) pode ser executado no Linux, MacOS, Solaris ou Microsoft Windows. Neste último caso, se você escolher janelas flutuantes, elas aparecerão individualmente na barra de tarefas do Windows.
Uso meu laptop com Windows XP (necessário para um hardware específico do Windows) como front-end para meus dois servidores Linux usando o NX Nomachine. Posso até imprimir na impressora conectada ao meu laptop Windows a partir do Linux.
fonte