सवाल कैसे जांचें कि मैं स्क्रीन सत्र में हूं या नहीं?


क्या यह जांचना किसी भी तरह से संभव है कि मैं अभी स्क्रीन सत्र में हूं या नहीं? मुझे यह निर्धारित करने की ज़रूरत है कि ctrl + d को मारने से मुझे सर्वर से डिस्कनेक्ट कर दिया जाएगा या बस वर्तमान स्क्रीन बंद कर दी जाएगी। धन्यवाद।


59
2018-04-10 16:30


मूल




जवाब:


आप देख सकते हैं $STY चर (एक चर सेट द्वारा स्क्रीन कमांड)। यदि यह नहीं है तो आप स्क्रीन सत्र में हैं।

मैं स्क्रीन में हूँ

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

मैं स्क्रीन में नहीं हूँ

$ echo $STY

$

86
2018-04-10 16:34



यह मानता है कि आप अभी भी स्थानीय कंप्यूटर पर चल रहे सत्र में हैं। यदि आप स्क्रीन शुरू करते हैं और फिर एसएसएच कहीं और, यह काम नहीं करेगा। - David Mackintosh
अच्छा काम करता है, धन्यवाद! - 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
@ डेविड मैकिंटोश यदि आप कहीं और एसएसएच में हैं, तो ctrl-D को मारने से "मुझे सर्वर से डिस्कनेक्ट करें", जो वास्तव में सवाल पूछता है। - womble♦
@ aggregate1166877 मेरे पास यह है कि यदि आप अब उपयोग की जाने वाली प्रत्येक मशीन में उपनाम के रूप में पोस्ट करते हैं। - Eduardo Bezerra


आप $ TERM चर देख सकते हैं।

echo $TERM

अगर यह एक है screen सत्र, शब्द परिवर्तक "स्क्रीन" वापस करना चाहिए।

root@deore:/volumes# echo $TERM
screen

Ctrl-a -d (स्क्रीन से बाहर निकलने के लिए)

root@deore:/volumes# echo $TERM
xterm

यह भी जांचें: https://stackoverflow.com/questions/3472287/how-do-you-tell-if-the-current-terminal-session-is-in-gnu-screen


37
2018-01-31 14:38



यह मानता है कि आप जानबूझकर किसी कारण से अपने टीईआरएम मूल्य के साथ गड़बड़ नहीं कर रहे हैं। - David Mackintosh
यदि आप स्क्रीन के अंदर अपने टीईआरएम चर बदल रहे हैं, तो आप अपने आप को सभी तरह की परेशानी आमंत्रित कर रहे हैं। - womble♦
खैर मेरे Solaris 2.6 नोड्स स्क्रीन मानों पर सेट TERM मानों के साथ अच्छा नहीं खेलते हैं। - David Mackintosh
"$TERM" = "screen" प्रवेश करते समय संरक्षित प्रतीत होता है sudo पर्यावरण, विपरीत के विपरीत $STY विकल्प। - Melebius


जब तक आप डिफ़ॉल्ट कुंजी बाइंडिंग नहीं बदल लेते हैं, तो आप कर सकते हैं Ctrl-a Ctrl-t, यदि आप स्क्रीन पर हैं, तो समय दिखाएगा। यह तब भी काम करेगा जब आपके पास एसएसएच है: अन्य सुझावों के विपरीत, कहीं और दूर।


22
2018-01-05 12:03



हम इसे क्यों नहीं उठा रहे हैं। - AndreKR
यह निश्चित रूप से यहां सबसे अच्छा समाधान है। - Felix Jen
यह सबसे अच्छा समाधान कैसा है? क्या होगा यदि आप हैं नहीं स्क्रीन में, और ^A^T वर्तमान में चल रहे प्रोग्राम में "न्यूक आपके होमडेर" के लिए महत्वपूर्ण अनुक्रम है? - womble♦
@womble यदि आप एक अज्ञात प्रोग्राम में हैं जो कुंजी अनुक्रमों और आदेशों के जवाब के रूप में यादृच्छिक विनाशकारी चीजें कर सकता है, तो कुछ भी सुरक्षित नहीं है। - Gurgeh


caption में आदेश ~/.screenrc एक स्क्रीन सत्र को अलग करने का एक अच्छा तरीका है।

मैं व्यक्तिगत रूप से इसका उपयोग कर रहा हूं:

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

यह स्क्रीन के नीचे इस तरह की एक पंक्ति जोड़ता है:

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

हरे रंग में और गुलाबी रंग की तारीख में पहले भाग (सिस्टम नाम + भार) के साथ। उपयोगी और याद करने के लिए मुश्किल!


10
2017-08-24 10:21



यह पूर्ण है! यह रास्ते (नीचे की स्थिति) में नहीं मिलता है, यह हमेशा दिखाई देता है (और रंगीन) और सिस्टम के बारे में उपयोगी जानकारी प्रदान करता है। मैंने इसे यहां भी पोस्ट किया stackoverflow.com/a/43571028/2450431 - hrvoj3e


मुझे एक और समाधान मिला है:
अपना संशोधित करें .screenrc, इसलिए मेरा स्क्रीन सत्र सामान्य टर्मिनल से बिल्कुल अलग दिखता है।


4
2017-08-11 06:43





screen -ls

अपने सत्र देखने के लिए और

screen -r sessioninfo

अलग होने पर डिस्कनेक्ट किए गए एक से फिर से कनेक्ट करने के लिए।

screen -D -r sessioninfo

एक डिस्कनेक्ट एक से फिर से कनेक्ट करने के लिए।


0
2018-04-29 09:04



यह सवाल का जवाब नहीं देता है। - womble♦


एक करो screen -ls। यह स्पष्ट रूप से संकेत करने जा रहा है Attached बनाम Detached स्थिति।

उदाहरण संलग्न:

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

उदाहरण अलग:

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

-1



अगर कहीं और स्क्रीन संलग्न हैं तो यह एक मुद्दा हो सकता है। - Dennis Nolte