Como posso assistir a uma janela de terminal remotamente?

8

Saí do escritório anteriormente com uma janela de terminal ativa executando um script em um servidor Centos 7. Agora eu tenho SSHing de casa e quero ver onde isso está. Isso é possível? Posso entrar novamente na mesma janela de terminal daqui?

    
por Robert Frost 28.06.2017 / 22:11

6 respostas

14

Como @Sven mencionou, a melhor opção é usar screen ou tmux . Essas são ferramentas conhecidas como "multiplexadores de terminal". Eles permitem que você crie sessões de shell que podem ser anexadas e desconectadas de logins reais. Essas ferramentas não são úteis apenas para verificar seu trabalho em outro terminal, mas possuem outros recursos, incluindo o compartilhamento de sua sessão com outro usuário e a certeza de que seu comando não será interrompido se você perder sua conexão com a Internet. Se você estiver pesquisando por screen , tente uma busca por "GNU Screen". Ambas as ferramentas estão disponíveis na maioria dos sistemas Linux.

Normalmente, você inicia a sessão e, em seguida, executa seu comando dentro dessa sessão. No entanto, se você já iniciou o comando, talvez queira procurar um artigo sobre como mover um comando em execução para uma sessão de tela. Eu não recomendaria tentar isso pela primeira vez em algo importante, no entanto. Esta questão pode ser de alguma utilidade:

Mover um processo já em execução para a tela

Se você quiser apenas verificar se o processo está em execução, minha ferramenta favorita seria strace. Esta ferramenta permite que você veja cada chamada do kernel feita por um processo. Pode ser preciso ter alguma habilidade para entender a saída, mas deve ao menos lhe dar uma idéia se o processo está rodando, e se você observar de perto o suficiente, pode pegar os nomes dos arquivos que estão sendo abertos. Para fazer isso, primeiro, encontre o PID, talvez pesquisando por ps aux|grep yourcommand e, em seguida:

strace -fp YOUR_PID

Você pode ^ C sair disso. Pode não permitir que você o reconecte, mas se você quiser apenas saber o que está fazendo, isso deve ser suficiente.

    
por 28.06.2017 / 22:30
9

Uma maneira de fazer isso: TMUX

Como a maioria das respostas já apontou - se em uma sessão SSH existente - você usa tmux (ou screen ) com o comando

tmux

Agora você está em uma nova sessão bash, na qual você pode iniciar seu programa / comando. Você pode fechá-lo a qualquer momento (mas não com CTRL + D, em vez de fechar a janela) e retornar a ele mais tarde, construindo uma conexão SSH com o mesmo usuário na mesma máquina e gravando o comando

tmux attach

Você também pode ter várias tmux sessões, dando-lhes nomes com

tmux new -s myname

Você pode ver uma lista de todas as sessões tmux abertas para seu usuário com

tmux ls

e anexar a uma sessão tmux nomeada com

tmux a -t myname

Encontre um tmux cheat sheet aqui abrangente.

Para um programa em execução

As respostas até agora parecem não estar cientes do fato de que você pode mover um processo já em execução para outro tmux / screen como esta resposta aponta. O programa que faz o trabalho é chamado reptyr e no Ubuntu / Debian você pode instalá-lo com um simples

sudo apt-get install reptyr

Depois disso, descubra o ID do processo do seu programa em execução (por exemplo, com top ou htop ), inicie uma sessão tmux e um simples

reptyr PID

irá recolocar o processo em execução na sua sessão tmux bash.

    
por 29.06.2017 / 10:37
5

No futuro, você pode usar screen ou tmux e, em seguida, pode reconectar uma sessão em execução.

    
por 28.06.2017 / 22:14
2

Como já foi apontado, recomendo usar tmux ou screen no futuro, mas isso só funciona se você pensou sobre isso antes.

Eu já estive na sua situação algumas vezes. Se o terminal que você deixou funcionando estiver no PC de mesa do seu escritório, você poderá conectar o SSH ao seu PC e iniciar um servidor VNC. Dessa forma, você pode pelo menos verificar o terminal aberto.

    
por 29.06.2017 / 02:06
2

Eu tenho usado byobu e acho incrivelmente poderoso. O Byobu é um gerenciador de janelas baseado em texto de código-fonte aberto GPLv3 e multiplexador de terminal.

Então você pode abrir uma sessão de byobu simplesmente digitando "byobu". E então você pode criar uma nova aba com Ctrl + F2, e mover entre as abas com Ctrl + F3 para trás, Ctrl + F4 para avançar. Você pode fechar uma guia com Ctrl + F6 ou desanexar de uma sessão com Shift + F6. Mais tarde, você anexa novamente à sessão simplesmente digitando "byobu" novamente.

O Byobu suporta divisões verticais e horizontais, tela cheia, entre outros recursos sofisticados. Está disponível no Ubuntu / Debian, CentOS / Fedora / RedHat e FreeBSD.

    
por 05.07.2017 / 10:44
1

Como todos mencionaram, o tmux pode ser usado. A tela não é útil quando você deseja compartilhar a tela com várias pessoas.

Acima de tudo, recomendo a todos que experimentem o link para fornecer acesso temporário, mesmo para a máquina local. tmate suporta todos os itens acima:)

link

    
por 30.06.2017 / 08:50