58 votos

¿Cómo puedo saber ' m ejecutándose dentro de un linux "pantalla" o no?

La "pantalla" se refiere a un programa mencionado en Cómo volver a conectar a una desconectado sesión de ssh . Que es un buen establecimiento.

Pero hay una pregunta que realmente me gustaría saber. ¿Cómo puedo saber si estoy ejecutando dentro de una "pantalla"? La diferencia es:

  • Si sí, sé que se puede cerrar de forma segura actual ventana de terminal, por ejemplo, cerca de una ventana de PuTTY, sin perder mi shell(Bash, etc) de la sesión.
  • Si no, sé que tengo que cuidar de los pendientes de las obras antes de cerrar la ventana de terminal.

Mejor, me gustaría que este estado se muestra en el PS1 del sistema de modo que puedo ver en cualquier momento de forma automática.

87voto

Wesley Puntos 22784

(Robado de "¿Cómo puedo saber si estoy en una pantalla?" en StackOverflow y creados por el usuario jho. P. S. no Se puede votar por un duplicado a través de StackExchange sitios).

Compruebe $STY. Si es null, se está en un "real" de la terminal. Si contiene algo, es el nombre de la pantalla en la que estás. Si utiliza tmux en lugar de la pantalla, también compruebe $TMUX. Agregar esto a tu mensaje, agregue lo siguiente a su ~/.bashrc:

if [ -n "$STY" ]; then export PS1="(screen) $PS1"; fi
if [ -n "$TMUX" ]; then export PS1="(tmux) $PS1"; fi

14voto

geekosaur Puntos 3587

Buscar $STY que proporciona detalles que screen utiliza para comunicarse con sí mismo; $WINDOW será la corriente screen la ventanilla.

13voto

Heinzi Puntos 628

La simple comprobación de que normalmente uso es simplemente pulse Ctrl-un:

  • Si el cursor salta al inicio de la línea, estoy no dentro de una sesión de pantalla.

  • Si no pasa nada, sé que estoy dentro de una sesión de pantalla y que yo he usado la pantalla de control clave. Entonces me golpeó un (ir al principio de la línea), w (mostrar pantalla de windows) o en la ejecución de algunos otros "inofensivo" de la pantalla de comandos para volver a la línea de comandos.

(Por supuesto, esto sólo funciona si actualmente está ejecutando bash o alguna otra pieza de software que "salta al principio de la línea" o algo equivalente inofensivo cuando se pulsa Ctrl-a.)

7voto

Josh Puntos 181

Esto me mantengo en mi .bashrc :

 PS1='[\u@\h \W'
 if [ "$WINDOW" ]; then PS1="$PS1 ($WINDOW)"; fi
 PS1="$PS1]$"

No es infalible, pero cada vez que se crea una nueva pantalla, pone el número de la ventana en el símbolo del sistema. Si no screen , no hay ningún número.

7voto

Ryan Sampson Puntos 2898

Bueno, la mayoría de las veces (ausente de alguien intentos de tornillo con cosas) su TERM se establecerá en screen (o al menos mencionar screen en alguna parte).

La solución fácil al problema en todas partes sólo se ejecuta pantalla. No salgas de casa sin ella, digo.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: