it-swarm-es.tech

Establecer un nombre para una sesión de pantalla

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

62
well actually

Puede nombrar una sesión al iniciarla con -S name opción. Desde una pantalla en ejecución, puede cambiarla escribiendo CTRL-a, :sessionname name. Puede ver sesiones de pantalla en ejecución con screen -ls, y conéctese a uno por su nombre con screen -xS name.

Dentro de una sola sesión de pantalla, también puede nombrar cada ventana. Haga esto escribiendo CTRL-a, A entonces el nombre que quieras. Puede ver una lista interactiva de ventanas con nombre escribiendo CTRL-a, ", y seleccione el que desea cambiar de esa lista.

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

73
Lars Yencken

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 c crea una ventana, C-a n y C-a p cambia 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. Pantalla de inicio sin ninguna reconexión (-r o -R) la opción crea una nueva sesión.

Windows tiene títulos, que se pueden configurar a través de -t opción de línea de comando, el C-a A atadura de teclas, el comando title o el \ek secuencia de escape. Ver respuesta del shellter para más detalles.

Las sesiones pueden tener nombres. Por lo general, establecería el nombre en la línea de comando con -S opció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.sessionname donde 12345 es la ID del proceso de la pantalla. Utilizar screen -r sessionname o screen -r 12345 para reanudar una sesión indicada a través de su nombre o ID de proceso.

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 página del manual para la pantalla

Editar: agregado

Para cambiar el nombre de la pantalla actual, cree una herramienta de script 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.

12
shellter

Mientras ejecuta screen:

Ctrl+a (o cualquiera que sea su screen secuencia de escape) A

4
ninjalj

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 unalias para eliminarlos.

3
caoimhin