Frage Wie überprüfe ich, ob ich in einer Bildschirmsitzung bin?


Ist es irgendwie möglich zu überprüfen, ob ich gerade in der Bildschirmsitzung bin? Ich brauche es um festzustellen, ob das Drücken von Strg + D mich vom Server trennt oder einfach den aktuellen Bildschirm schließt. Vielen Dank.


59
2018-04-10 16:30


Ursprung




Antworten:


Sie können auf die $STY Variable (eine Variable, die von der Bildschirmbefehl). Wenn es nicht "" ist, dann sind Sie in einer Bildschirmsitzung.

Ich bin auf dem Bildschirm

$ echo $STY 
29624.pts-1.iain-10-04
$

Ich bin nicht im Bildschirm

$ echo $STY

$

86
2018-04-10 16:34



Dies setzt voraus, dass Sie sich immer noch in einer laufenden Sitzung auf dem lokalen Computer befinden. Wenn Sie den Bildschirm und dann SSH irgendwo anders starten, wird dies nicht funktionieren. - David Mackintosh
Funktioniert gut, danke! - crodjer
if test -n "$STY"; then printf "This is a screen session named '$STY'.\n"; else printf "This is NOT a screen session.\n"; fi - aggregate1166877
@DavidMackintosh Wenn du irgendwo anders SSH hast, wird das Drücken von Strg-D "Verbindung mit dem Server trennen", was genau die Frage ist, nach der die Frage fragt. - womble♦
@ aggregate1166877 Ich habe das, wenn Sie als Alias ​​in jeder einzelnen Maschine, die ich jetzt verwende, gepostet haben. - Eduardo Bezerra


Sie können sich die Variable $ TERM ansehen.

echo $TERM

Wenn es ein ist screen Sitzung sollte der Begriff Variable "Bildschirm" zurückgeben.

root@deore:/volumes# echo $TERM
screen

Strg-a -d (um den Bildschirm zu verlassen)

root@deore:/volumes# echo $TERM
xterm

Überprüfen Sie auch: https://stackoverflow.com/questions/3472287/how-do-you-tell-i-f-the-current-terminal-session-is-in-gnu-screen


37
2018-01-31 14:38



Dies setzt voraus, dass Sie aus irgendeinem Grund nicht bewusst mit Ihrem TERM-Wert in Konflikt geraten. - David Mackintosh
Wenn Sie Ihre TERM-Variable ändern, während Sie sich im Bildschirm befinden, laden Sie alle möglichen Probleme mit sich ein. - womble♦
Nun, meine Solaris 2.6-Knoten spielen nicht gut mit TERM-Werten, die auf Bildschirmwerte eingestellt sind. - David Mackintosh
"$TERM" = "screen" scheint beim Betreten erhalten zu sein sudo Umwelt, anders als die $STY Möglichkeit. - Melebius


Wenn Sie die Standardtastenbelegungen nicht geändert haben, können Sie dies tun Ctrl-a Ctrl-t, die die Zeit anzeigt, wenn Sie im Bildschirm sind. Dies funktioniert auch, wenn Sie anderswo ssh: d weg haben, anders als die anderen Vorschläge.


22
2018-01-05 12:03



Warum heben wir das nicht auf? - AndreKR
Dies ist definitiv die beste Lösung hier. - Felix Jen
Wie ist das die beste Lösung? Was ist, wenn du es bist? nicht im Bildschirm und ^A^T ist die Tastenfolge für "nuke your homedir" in dem Programm, das Sie gerade ausführen? - womble♦
@womble Wenn Sie in einem unbekannten Programm sind, das zufällige destruktive Dinge als Antwort auf Tastenfolgen und Befehle ausführen kann, dann ist nichts sicher. - Gurgeh


Das caption Befehl in der ~/.screenrc ist eine gute Möglichkeit, eine Bildschirmsitzung zu unterscheiden.

Ich benutze das persönlich:

$ cat ~/.screenrc
caption always "%{= kc}Screen session on %H (system load: %l)%-28=%{= .m}%D %d.%m.%Y %0c"

Es fügt eine Zeile wie diese am unteren Bildschirmrand hinzu:

Screen session on gbook (system load: 1,75 1,74 1,68)                   Lun 05.01.2015 13:01

Mit dem ersten Teil (Systemname + Lade) in grün und dem Datum in pink. Nützlich und schwer zu verpassen!


10
2017-08-24 10:21



Dies ist perfekt! Es ist nicht im Weg (untere Position), es ist immer sichtbar (und farbig) und bietet nützliche Informationen über das System. Ich habe das hier auch gepostet stackoverflow.com/a/43571028/2450431 - hrvoj3e


Ich habe eine andere Lösung gefunden:
Ändern Sie Ihre .screenrc, so sieht meine Bildschirmsitzung völlig anders aus als normales Terminal.


4
2017-08-11 06:43





screen -ls

um Ihre Sitzungen zu sehen und

screen -r sessioninfo

Verbindung mit einer getrennten Verbindung herstellen, wenn sie getrennt ist.

screen -D -r sessioninfo

um eine Verbindung zu einem getrennten wiederherzustellen.


0
2018-04-29 09:04



Dies beantwortet die Frage nicht. - womble♦


Tu einen screen -ls. Es wird explizit darauf hinweisen Attached gegen Detached Status.

Beispiel angehängt:

$ screen -ls | grep tached
3132.pts-0.esavo00      (Attached)

Beispiel abgelöst:

$ screen -ls |grep tached
3132.pts-0.esavo00  (Detached)

-1



Wenn an anderen Stellen Bildschirme angebracht sind, könnte dies ein Problem darstellen. - Dennis Nolte