Establecer un nombre para una sesión de pantalla

46

¿Hay alguna manera de dar un nombre particular a una sesión de pantalla de Unix? Por ejemplo, supongamos que estoy ejecutando el mismo programa varias veces, cada uno con diferentes parámetros y quiero decir cuál es cuál.

Bueno en realidad
fuente
No es una pregunta de programación. Debería ir a SuperUser o Unix.
0xC0000022L

Respuestas:

56

Puede nombrar una sesión al iniciarla con la -S nameopción. Desde una pantalla en ejecución, puede cambiarla escribiendo CTRL-a, :sessionname name. Puede ver sesiones de pantalla en ejecución con screen -lsy conectarse a una por nombre con screen -xS name.

Dentro de una sola sesión de pantalla, también puede nombrar cada ventana. Para ello, escriba CTRL-a, Ael nombre que desee. Puede ver una lista interactiva de ventanas con nombre escribiendo CTRL-a, "y seleccionar la que desea cambiar de esa lista.

Nombrar pantallas y terminales dentro de pantallas es realmente útil para recordar cuáles son y por qué las comenzó en primer lugar.

Lars Yencken
fuente
Es posible cambiar el nombre de una sesión de pantalla después de que se inicie (usando :sessionname NEWNAME), pero es "generalmente desalentado". La $STYvariable de entorno todavía se refiere al nombre original. Consulte el screenmanual: gnu.org/software/screen/manual/html_node/Session-Name.html
Keith Thompson
22

Aquí hay dos conceptos, y no estoy seguro de cuál tiene en mente:

  • Puede tener múltiples ventanas de pantalla. Cada ventana ejecuta un shell u otro programa. Todas las ventanas están alojadas por el mismo proceso. C-a ccrea una ventana C-a ny C-a pcambia a la ventana siguiente / anterior, y así sucesivamente.
  • Puede tener múltiples sesiones de pantalla. Cada sesión está alojada por su propio proceso y es independiente de todas las demás sesiones. La pantalla de inicio sin ninguna opción de reconexión ( -ro -R) crea una nueva sesión.

Windows tiene títulos, que se pueden configurar a través de la -topción de línea de comando, la C-a Acombinación de teclas, el titlecomando o la \eksecuencia de escape. Vea la respuesta de Shellter para más detalles.

Las sesiones pueden tener nombres. Por lo general, establecería el nombre en la línea de comando con la -Sopción; si no especifica un nombre, la pantalla lo inventa. Si usa varias sesiones de pantalla, normalmente les daría diferentes nombres de sesión. Puede enumerar la sesión de la pantalla en ejecución con screen -ls; La primera palabra en cada línea de sesión es 12345.sessionnamedonde 12345 es la ID del proceso de la pantalla. Use screen -r sessionnameo screen -r 12345para reanudar una sesión indicada a través de su nombre o ID de proceso.

Gilles 'SO- deja de ser malvado'
fuente
1
En las combinaciones de teclas predeterminadas, para cambiar el título debe usar Ca A.
enzotib
11

Ah ... Pantalla, me lleva de vuelta ;-)

Para una ventana

-t name
    sets the title (a.k.a.) for the default shell or specified program. 
    See also the "shelltitle" .screenrc command.

Para varias sesiones iniciadas desde su .screenrc

screen -t top 2 nice top
screen -t ....

Aquí hay un enlace a una copia en línea de la página de manual para la pantalla.

Editar: agregado

Para cambiar el nombre de la pantalla actual, cree una herramienta de script de shell como

cat scrnTitle.sh
#/bin/bash
echo -ne '\ek${0}\e\\'

Sin probar, no tengo pantalla disponible en el sistema en el que estoy trabajando.

shellter
fuente
Gracias, esto ayuda demasiado. ¿Hay alguna forma de cambiar el nombre de una sesión de pantalla ya existente?
Bueno, en realidad el
@ Charlotte: ver ediciones. Gracias por los votos!
shellter
Buena respuesta @shellter! Tengo curiosidad, ¿dijiste "me lleva de vuelta" para significar que usas algo más en estos días (por ejemplo, tmux), o simplemente que tiene más de 32 años ?
tutuDajuju
1
@tutuDajuju: Gulp, ahora que lo pienso, he usado screenal menos 25 años. Me devuelve, porque ahora es un caso de uso especial que me llevaría screen. Normalmente sigo abriendo X-Terms, pero recuerdo cuando parecía imposible correr Xen una PC 486 ;-) ¡Salud!
Shellter
@shellter FYI, ejecuté X en una PC 486 con 8Mb de RAM en 1992 ...
Eno
4

Mientras corres screen:

Ctrl+a(o cualquiera que sea tu screensecuencia de escape)A

ninjalj
fuente
3

Las respuestas anteriores ya le dicen cómo nombrar una pantalla cuando la inicia. También señalan que una pantalla no se puede renombrar después de que se ha iniciado. El título de la ventana se puede establecer, pero el nombre utilizado para adjuntar a la pantalla sigue siendo pid.pty.host.

Sin embargo, para lograr un efecto útil, descubrí que usar alias funciona bastante bien. Si me olvido de nombrar una pantalla o me encuentro en una sesión con un montón de pantallas abiertas que naturalmente se han convertido en pantallas para tareas particulares, simplemente configuro un alias para que el comando las adjunte.

ejemplo:

alias goncompile='screen -r 2354'

La emisión del comando alias por sí solo le recordará qué pantallas tiene activadas y el comando que configuró para adjuntarlas.

Use unaliaspara eliminarlos.

caoimhin
fuente