Odpowiedzi:
Możesz spojrzeć na $STY
zmienną (zmienną ustawioną za pomocą polecenia screen ). Jeśli nie jest to „”, jesteś w sesji ekranowej.
Jestem na ekranie
$ echo $STY
29624.pts-1.iain-10-04
$
Nie ma mnie na ekranie
$ echo $STY
$
if test -n "$STY"; then printf "This is a screen session named '$STY'.\n"; else printf "This is NOT a screen session.\n"; fi
Możesz spojrzeć na zmienną $ TERM.
echo $TERM
Jeśli jest to screen
sesja, termin zmienna powinien zwracać „screen”.
root@deore:/volumes# echo $TERM
screen
Ctrl-a -d (aby wyjść z ekranu)
root@deore:/volumes# echo $TERM
xterm
Sprawdź także: https://stackoverflow.com/questions/3472287/how-do-you-tell-if-the-current-terminal-session-is-in-gnu-screen
"$TERM" = "screen"
wydaje się być zachowane podczas wchodzenia do sudo
środowiska, w przeciwieństwie do $STY
opcji.
O ile nie zmieniłeś domyślnych przypisań klawiszy, możesz zrobić Ctrl+ a-> Ctrl+ t, który pokaże czas, jeśli jesteś na ekranie. Działa to nawet jeśli masz ssh: d gdzieś indziej, w przeciwieństwie do innych sugestii.
caption
Polecenie w ~/.screenrc
to dobry sposób, aby różnicować sesję ekranu.
Osobiście używam tego:
$ cat ~/.screenrc
caption always "%{= kc}Screen session on %H (system load: %l)%-28=%{= .m}%D %d.%m.%Y %0c"
Dodaje taką linię jak ta u dołu ekranu:
Screen session on gbook (system load: 1,75 1,74 1,68) Lun 05.01.2015 13:01
Z pierwszą częścią (nazwa systemu + ładunek) w kolorze zielonym i datą w kolorze różowym. Przydatne i trudne do przeoczenia!
Znalazłem inne rozwiązanie:
Zmodyfikuj swój .screenrc
, aby moja sesja ekranu wyglądała zupełnie inaczej niż normalny terminal.
.screenrc
plik.
Zrobić screen -ls
. To będzie wyraźnie wskazują Attached
kontra Detached
statusu.
Przykład w załączeniu:
$ screen -ls | grep tached
3132.pts-0.esavo00 (Attached)
Przykład odłączony:
$ screen -ls |grep tached
3132.pts-0.esavo00 (Detached)