Saí do escritório mais cedo com uma janela de terminal ativa executando um script em um servidor Centos 7. Agora eu tenho SSHing em casa e quero ver para onde ele deve chegar. Isso é possível? Posso voltar à mesma janela do terminal a partir daqui?
8
strace -e write -p 12345
(substitua o pid do processo em que você está interessado). Outra opção é:strace -e read -p 12345
(substitua o pid do emulador de terminal). Em princípio, seria possível escrever um programa para usar aptrace
chamada do sistema para coletar as informações da mesma maneira questrace
faz e gravá-las diretamente em seu próprio terminal. Não sei se esse programa existe, mas cobriria os requisitos especificados em sua pergunta.Respostas:
Como o @Sven mencionou, a melhor opção é usar
screen
ortmux
. Essas são ferramentas conhecidas como "multiplexadores de terminal". Eles permitem criar sessões de shell que podem ser anexadas e desanexadas dos logins reais. Essas ferramentas não são úteis apenas para verificar seu trabalho em outro terminal, mas têm outros recursos, incluindo compartilhar sua sessão com outro usuário e garantir que seu comando não pare se você perder sua conexão com a Internet. Se você estiver procurandoscreen
, tente uma pesquisa por "Tela GNU". Ambas as ferramentas estão disponíveis na maioria dos sistemas Linux.Normalmente, você iniciaria a sessão e executaria seu comando dentro dessa sessão. No entanto, se você já iniciou o comando, pode consultar 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 pergunta pode ser útil:
Movendo um processo já em execução para Screen
Se você quiser apenas verificar se o processo está em execução, minha ferramenta favorita seria strace. Essa ferramenta permite que você veja cada chamada do kernel feita por um processo. Pode ser necessário um pouco de habilidade para entender a saída, mas pelo menos você deve ter uma idéia se o processo estiver em execução e se você prestar atenção o suficiente, poderá pegar os nomes de arquivos que estão abrindo. Para fazer isso, primeiro, encontre o PID, talvez pesquisando
ps aux|grep yourcommand
e depois:Você pode ^ C para sair disso. Pode não permitir que você se reconecte, mas se você quiser apenas saber o que está fazendo, isso deve ser suficiente.
fonte
Uma maneira de fazer isso: TMUX
Como a maioria das respostas já apontou - se em uma sessão SSH existente - você usa
tmux
(ouscreen
) com o comandoAgora você está em uma nova sessão do bash, na qual pode iniciar seu programa / comando. Você pode fechá-lo a qualquer momento (mas não com CTRL + D, fechando a janela) e retorná-lo posteriormente, construindo uma conexão SSH com o mesmo usuário na mesma máquina e escrevendo o comando
Você também pode ter várias
tmux
sessões, dando-lhes nomes comVocê pode ver uma lista de todas as
tmux
sessões abertas para seu usuário come anexar a uma
tmux
sessão nomeada comEncontre um abrangente
tmux cheat sheet
aqui .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 essa resposta aponta. O programa que faz o trabalho é chamadoreptyr
e, no Ubuntu / Debian, você pode instalá-lo com um simplesDepois disso, descubra o ID do processo do seu programa em execução (por exemplo, com
top
ouhtop
), inicie umatmux
sessão e um simplesanexará novamente o processo em execução à sua
tmux
sessão do bash.fonte
No futuro, você pode usar
screen
outmux
e pode, em seguida, recoloque a sessão em execução.fonte
Estou usando o byobu e acho incrivelmente poderoso. Byobu é um gerenciador de janelas e um multiplexador de terminal baseados em texto de código aberto GPLv3.
Para abrir uma sessão de byobu, basta digitar "byobu". E então você pode criar uma nova guia com Ctrl + F2 e mover-se entre as guias com Ctrl + F3 para trás, Ctrl + F4 para frente. Você pode fechar uma guia com Ctrl + F6 ou desanexar de uma sessão com Shift + F6. Mais tarde, você se reconectará à 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.
fonte
tmux
escreen
que muitos acham fornece uma experiência de usuário melhor do que eles fazem de imediato.Como já foi apontado, eu recomendo usar
tmux
ouscreen
no futuro, mas isso só funciona se você pensar sobre isso com antecedência.Eu já estive na sua situação algumas vezes. Se o terminal que você deixou em execução estava no PC de mesa do escritório, você pode fazer o SSH no PC e iniciar um servidor VNC. Dessa forma, você pode pelo menos verificar o terminal aberto.
fonte
Como todos mencionaram, o tmux pode ser usado. tela não é útil onde você deseja compartilhar a tela com várias pessoas.
Acima de tudo, recomendo a todos que experimentem https://tmate.io/ para dar acesso temporário, mesmo à máquina local. O tmate suporta todos os itens acima :)
https://tmate.io/
fonte