Vraag Hoe controleer ik of ik in de screen-sessie ben?


is het op een of andere manier mogelijk om te controleren of ik het nu heb in de schermsessie? Ik heb het nodig om te bepalen of het raken van ctrl + d me van de server verbreekt of gewoon het huidige scherm sluit. Bedankt.


59
2018-04-10 16:30


oorsprong




antwoorden:


Je kunt naar de $STY variabele (een variabele ingesteld door de schermopdracht). Als dit geen "" is, bevindt u zich in een schermsessie.

Ik ben op het scherm

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

Ik ben niet op het scherm

$ echo $STY

$

86
2018-04-10 16:34



Dit veronderstelt dat u zich nog steeds in een actieve sessie bevindt op de lokale computer. Als u het scherm start en dan ergens anders op SSH, werkt dit niet. - David Mackintosh
Werkt goed, bedankt! - 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 als je ergens anders bent binnengestapt, zal het raken van ctrl-D "me loskoppelen van de server", wat precies is waar de vraag over vraagt. - womble♦
@ aggregate1166877 Ik heb dit als je een alias hebt gepost op elke afzonderlijke computer die ik nu gebruik. - Eduardo Bezerra


U kunt de variabele $ TERM bekijken.

echo $TERM

Als het een is screen sessie, moet de term variabele terugkeren naar "scherm".

root@deore:/volumes# echo $TERM
screen

Ctrl-a-d (om het scherm te verlaten)

root@deore:/volumes# echo $TERM
xterm

Controleer ook: https://stackoverflow.com/questions/3472287/how-do-you-tell-if-the-current-terminal-session-is-in-gnu-screen


37
2018-01-31 14:38



Dit veronderstelt dat u om wat voor reden dan ook niet opzettelijk knoeit met uw TERM-waarde. - David Mackintosh
Als u uw TERM-variabele binnen het scherm wijzigt, vraagt ​​u allerlei problemen op uzelf. - womble♦
Welnu, mijn Solaris 2.6-knooppunten spelen niet leuk met TERM-waarden die zijn ingesteld op schermwaarden. - David Mackintosh
"$TERM" = "screen" lijkt te worden bewaard bij binnenkomst sudo omgeving, in tegenstelling tot de $STY keuze. - Melebius


Tenzij u de standaard toetsbindingen hebt gewijzigd, kunt u doen Ctrl-a Ctrl-t, die de tijd laat zien, als u op het scherm bent. Dit zal werken, zelfs als je ssh: d ergens anders hebt weggehaald, in tegenstelling tot de andere suggesties.


22
2018-01-05 12:03



Waarom stemmen we dit niet bij. - AndreKR
Dit is absoluut de beste oplossing hier. - Felix Jen
Hoe is dit de beste oplossing? Wat als je bent niet in scherm, en ^A^T is de sleutelreeks voor "nuke your homedir" in het programma dat u momenteel uitvoert? - womble♦
@womble Als je in een onbekend programma bent dat willekeurige destructieve dingen kan doen als een reactie op sleutelreeksen en commando's, dan is niets veilig. - Gurgeh


De caption commando in de ~/.screenrc is een leuke manier om een ​​schermsessie te differentiëren.

Ik gebruik dit persoonlijk:

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

Het voegt een regel zoals deze toe onderaan het scherm:

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

Met het eerste deel (systeemnaam + laden) in groen en de datum in roze. Handig en moeilijk te missen!


10
2017-08-24 10:21



Dit is perfect! Het staat niet in de weg (onderste positie), het is altijd zichtbaar (en gekleurd) en biedt nuttige informatie over het systeem. Ik heb dit hier ook gepost stackoverflow.com/a/43571028/2450431 - hrvoj3e


Ik heb een andere oplossing gevonden:
Wijzig uw .screenrc, dus mijn schermsessie ziet er compleet anders uit dan de normale terminal.


4
2017-08-11 06:43





screen -ls

om uw sessies te bekijken en

screen -r sessioninfo

om opnieuw verbinding te maken met een losgekoppeld exemplaar, indien losgekoppeld.

screen -D -r sessioninfo

om opnieuw verbinding te maken met een verbroken verbinding.


0
2018-04-29 09:04



Dit geeft geen antwoord op de vraag. - womble♦


Doe een screen -ls. Het gaat expliciet aangeven Attached versus Detached -status.

Voorbeeld bijgevoegd:

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

Voorbeeld vrijstaand:

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

-1



als ergens anders schermen zijn aangesloten, kan dit een probleem zijn. - Dennis Nolte