Então, digamos que você inicialize a instalação do Linux até a área de trabalho. Você inicia um gnome-terminal / konsole / o que quer que seja, para ter um tty para digitar comandos.
Agora, digamos que eu SSH nessa mesma máquina. Isso me ligará a outro tty no qual inserir comandos.
Agora, digamos que eu queira "alternar" meu tty do meu SSH original para o terminal gnome-terminal iniciado anteriormente.
Basicamente, eu estou perguntando se existe alguma maneira de fazer a mesma coisa screen -x
, mas sem tela?
Eu sei que você pode facilmente enviar saída para o outro tty simplesmente ecoando algo no arquivo / dev, mas não conheço uma maneira de 'visualizar' o que está no tty.
Alguma ideia?
terminal
gnu-screen
terminal-multiplexer
user488244
fonte
fonte
Respostas:
Talvez esse esquema possa esclarecer a situação. Esta é a configuração usual:
E não há como conectar novidades
Process3
como esta:O que a tela (e outras) faz é alocar algum dispositivo pseudo-terminal (como o xterm) e redirecioná-lo para um ou mais terminais "reais" (físicos, virtuais ou emulados):
Usando
screen -x
você pode conectar mais um terminal, xterm, o que quer que seja (digamosTerminal 3
) à sessão da tela.Portanto, não, você não pode se comunicar diretamente através do stdin / stdout com processos conectados a um terminal diferente. Você só pode fazer isso através do processo que está controlando este terminal se for um pseudo terminal e se esse processo foi permitido (como a tela é).
fonte
ptrace
; graças aptrace
, programas como oneercs
,retty
etc., podem fazê-lo às vezes.stdin
,stdout
à direita do esquema) diretamente, seqüestrando o processo. Pura maldade!Reconectar os processos do outro terminal ao terminal atual não é possível sem truques sujos. É possível forçar o processo a executar determinadas chamadas do sistema (com
ptrace
); isso faz com que alguns programas falhem. Existem várias ferramentas que fazem isso, comoneercs
,retty
,cryopid
,reptyr
, ...; consulte Como posso negar um processo em execução e associá-lo a um novo shell de tela? e perguntas vinculadas.Obter a saída já exibida no outro terminal é um problema diferente. Não existe uma solução totalmente geral: em princípio, uma vez que a saída tenha sido renderizada, o terminal poderá armazená-la apenas como uma imagem. Na prática, todos os emuladores de terminal X mantêm seu buffer de saída em forma de texto para que você possa copiá-lo e copiá-lo. A maneira de obter essa saída depende do emulador de terminal; a idéia básica é simular a seleção de todo o buffer de rolagem. Para um console Linux como
/dev/tty1
, o buffer de rolagem está facilmente disponível como/dev/vcs1
(e/dev/vcsa1
com atributos de texto).A resposta simples é que, se você deseja reconectar-se a um terminal de um local diferente, use
screen
outmux
.fonte