usar remove how como comandos close attached linux ssh gnu-screen

remove - screen linux comandos



SSH, pantalla y XDISPLAY (3)

Utilizo la pantalla para persistir en mi sesión de trabajo y me conecto a la misma sesión desde varias máquinas. ¿Cómo puedo configurar SSH y pantalla de forma que la variable XDISPLAY dentro de mi sesión de pantalla persistente siempre esté configurada en la máquina desde la que me estoy conectando actualmente?

es decir. Comienzo la sesión de la pantalla en el trabajo y uso gvim, que usa el servidor X que se ejecuta en mi máquina de trabajo. Más tarde, me conecto a la misma sesión desde mi casa y también quiero usar gvim. Pero esta vez, quiero que gvim use el servidor X en mi máquina doméstica. Me doy cuenta de que podría actualizar manualmente XDISPLAY cada vez que me conecte desde una máquina diferente, pero prefiero tener un sistema automatizado.

Puntos de bonificación si realmente puedo mover gvim de mi máquina de trabajo a la máquina de mi casa mientras está en funcionamiento. Intenté xmove pero nunca pude hacerlo bien.


No hay una forma "trivial" de cambiar variables de entorno en procesos foráneos.

Una solución directa podría ser XDISPLAY su XDISPLAY en un archivo al iniciar sesión y usar PROMPT_COMMAND para leer este archivo antes de imprimir el siguiente mensaje.

Para mover aplicaciones X, mira algo como X11vnc o Xvnc .


También estoy interesado en la respuesta para esto. ¿No debería ser posible enumerar los procesos de SSH para su usuario ordenados por tiempo y quizás el entorno para ese proceso?


La siguiente es una solución manual, pero no hay ninguna razón por la que no pueda usar un alias o una secuencia de comandos para que se realice de forma automática cuando inicie sesión de forma remota.

Suponiendo que su shell local establece la variable DISPLAY de forma adecuada, puede usar screen -X para enviar los siguientes comandos a su pantalla remota antes de conectarse.

# set future remote shells started by screen to have the correct XDISPLAY % screen -X "setenv XDISPLAY $DISPLAY" #... # set up the keystroke F1 to update the XDISPLAY in current shells % screen -X "bindkey -k k1 stuff export XDISPLAY=$DISPLAY/015" #...

Si sabe que todas sus ventanas se dejaron en un shell (no en un editor en ejecución o algo XDISPLAY ), puede usar :at para cambiar el XDISPLAY lugar de un enlace de clave:

# update the XDISPLAY in all current windows % screen -X "at % stuff export XDISPLAY=$DISPLAY/015" #...

Alternativamente, si conoce alguna forma de captar el valor de la variable de entorno de un proceso padre, puede usarlo junto con el gancho de aviso de su shell para tomar el valor de XDISPLAY de SCREEN (tal como lo establece setenv) y actualizarlo para el shell.