Entonces, supongamos que inicia su instalación de Linux desde el escritorio. Inicia un gnome-terminal / konsole / lo que sea para que tenga un tty para ingresar comandos.
Ahora digamos que SSH en esa misma máquina. Me unirá a otro tty para ingresar comandos.
Ahora digamos que quiero "cambiar" mi tty de mi SSH original a la terminal gnome que comencé antes.
Básicamente, estoy preguntando si hay alguna manera de hacer lo mismo screen -x
pero sin pantalla.
Sé que puede enviar fácilmente la salida al otro tty simplemente haciendo eco de algo en el archivo / dev, pero no conozco una forma de 'ver' lo que hay en el tty.
¿Algunas ideas?
terminal
gnu-screen
terminal-multiplexer
usuario488244
fuente
fuente
Respuestas:
Tal vez este esquema pueda aclarar la situación. Esta es la configuración habitual:
Y no hay forma de conectar algo nuevo
Process3
como este:Lo que hace la pantalla (y otras) es asignar algún dispositivo pseudo terminal (como lo hace xterm) y redirigirlo a uno o más terminales "reales" (físicos, virtuales o emulados):
Utilizando
screen -x
puede conectar un terminal más, xterm, lo que sea (digamosTerminal 3
) a la sesión de pantalla.Entonces, no, no puede comunicarse directamente a través de stdin / stdout con procesos conectados a un terminal diferente. Solo puede hacerlo a través del proceso que controla este terminal si resulta ser un pseudo terminal, y si este proceso fue concebido para hacerlo (como lo es la pantalla).
fuente
ptrace
; gracias aptrace
programas comoneercs
,retty
etc., a veces podemos hacerlo.stdin
,stdout
a la derecha del esquema) directamente a través del secuestro del proceso. ¡Pura maldad!Volver a conectar los procesos en el otro terminal a su terminal actual no es posible sin trucos sucios. Es posible forzando el proceso para realizar ciertas llamadas al sistema (con
ptrace
); Esto hace que algunos programas se bloqueen. Hay varias herramientas que hacen esto, comoneercs
,retty
,cryopid
,reptyr
, ...; ver ¿Cómo puedo rechazar un proceso en ejecución y asociarlo a un nuevo shell de pantalla? y preguntas vinculadas.Obtener el resultado que ya se muestra en el otro terminal es un problema diferente. No existe una solución totalmente general: en principio, una vez que se ha procesado la salida, el terminal puede almacenarla solo como una imagen. En la práctica, todos los emuladores de terminal X mantienen su búfer de salida en forma de texto para que pueda copiarlo y pegarlo. La forma de obtener esa salida depende del emulador de terminal; La idea básica es simular la selección de todo el búfer de desplazamiento hacia atrás. Para una consola Linux como
/dev/tty1
, el búfer de desplazamiento hacia atrás está fácilmente disponible como/dev/vcs1
(y/dev/vcsa1
con atributos de texto).La respuesta simple es que si desea volver a conectarse a un terminal desde un lugar diferente, use
screen
otmux
.fuente