La "pantalla" se refiere a un programa mencionado en Cómo reconectarse a una sesión ssh desconectada . Esa es una buena instalación.
Pero hay una pregunta que realmente me gustaría saber. ¿Cómo sé si estoy corriendo dentro de una "pantalla"? La diferencia es:
- En caso afirmativo, sé que puedo cerrar con seguridad la ventana de terminal actual, por ejemplo, cerrar una ventana PuTTY, sin perder mi sesión de shell (Bash, etc.).
- Si no, sé que tengo que ocuparme de cualquier trabajo pendiente antes de cerrar la ventana del terminal.
Mejor, me gustaría que este estado se muestre en el indicador de PS1 para que pueda verlo en cualquier momento automáticamente.
linux
gnu-screen
Jimm Chen
fuente
fuente
Respuestas:
(Robado de " ¿Cómo puedo saber si estoy en una pantalla? " En StackOverflow y creado por el usuario jho . PD No puede votar por un duplicado en los sitios de StackExchange).
Compruebe
$STY
. Si es nulo, estás en una terminal "real". Si contiene algo, es el nombre de la pantalla en la que estás.Si no estás en la pantalla:
Si estás en la pantalla:
Si usa tmux en lugar de pantalla, verifique también
$TMUX
. Para agregar esto a su solicitud, agregue lo siguiente a su~/.bashrc
:fuente
sudo
él de forma predeterminada, no heredará las variables de entorno, incluido$STY
. Sin embargo, se suele propagado al medio ambiente sudo, así que tal vez sea comprobar si hay o$TERM
$STY
$TERM=="screen"
Busque
$STY
cuál proporciona detalles quescreen
utiliza para comunicarse consigo mismo;$WINDOW
entonces será elscreen
número de ventana actual .fuente
El simple control que suelen utilizar es simplemente pulse Ctrl- a:
Si el cursor salta al inicio de la línea , no estoy dentro de una sesión de pantalla.
Si no sucede nada , sé que estoy dentro de una sesión de pantalla y que acabo de usar la tecla de control de pantalla. Luego presiono a(salto al comienzo de la línea), w(muestra las ventanas de pantalla actuales) o ejecuto algún otro comando de pantalla "inofensivo" para volver al símbolo del sistema.
(Por supuesto, esto solo funciona si actualmente está ejecutando bash o alguna otra pieza de software que "salta al inicio de la línea" o hace algo equivalentemente inofensivo al presionar Ctrl-a).
fuente
Bueno, la mayoría de las veces (en ausencia de los intentos de alguien de fastidiar las cosas)
TERM
se establecerá enscreen
(o al menos mencionará enscreen
alguna parte).La solución fácil al problema es simplemente ejecutar la pantalla en todas partes. No salgas de casa sin ella, digo.
fuente
$TERM
También típicamente se propaga a travéssudo
, ¡lo cual es una ventaja!Mantengo esto en mi
.bashrc
:No es infalible, pero cada vez que creo una nueva pantalla, pone el número de la ventana en el indicador. Si no estoy corriendo
screen
, no hay número.fuente
Tengo una forma aún más genial.
Agregue lo siguiente a su ~ / .screenrc y verá una línea de estado en la parte inferior (que muestra en texto invertido la fecha, la hora y la carga del sistema. Más códigos de escape se encuentran en el enlace de la página del manual a continuación.
Fuente esto cuando en una sesión de pantalla con
ctrl-a:source ~/.screenrc
.Tengo que agradecer a Kyle Rankin de Linux Journal por esto. Vea su fantástico artículo en http://www.linuxjournal.com/article/10950 . La sección de la página de manual a la que se refiere se puede encontrar en http://www.gnu.org/software/screen/manual/screen.html#String-Escapes .
fuente
también puede recurrir al árbol de procesos
$$
para ver si encuentra una instancia de pantalla. la cadena exacta probablemente dependerá de su configuración: en mi cuadro OS X, unazsh
pantalla interna tienelogin
como padre,SCREEN
como abuelo yscreen
como bisabuelo.fuente