स्क्रीन सेशन में होने पर कैसे जांचें?


75

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

जवाबों:


107

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

मैं परदे में हूँ

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

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

$ echo $STY

$

12
यह मानता है कि आप अभी भी स्थानीय कंप्यूटर पर चल रहे सत्र के भीतर हैं। यदि आप स्क्रीन और फिर SSH कहीं और शुरू करते हैं, तो यह काम नहीं करेगा।
डेविड मैकिन्टोश

2
if test -n "$STY"; then printf "This is a screen session named '$STY'.\n"; else printf "This is NOT a screen session.\n"; fi
समुच्चय

2
@DavidMackintosh यदि आप SSH'd में कहीं और हैं, तो ctrl-D को मारकर "मुझे सर्वर से डिस्कनेक्ट कर देंगे", जो कि वास्तव में सवाल पूछता है।
वोमबेल

1
@ समुच्चय 1166877 मेरे पास यह है यदि आप हर एक मशीन में एक उपनाम के रूप में पोस्ट करते हैं जिसे मैं अभी उपयोग करता हूं।
एडुआर्डो बीज़र्रा

44

आप $ 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


4
यह माना जाता है कि आप जानबूझकर किसी कारण से अपने TERM मान के साथ खिलवाड़ नहीं कर रहे हैं।
डेविड मैकिन्टोश

1
यदि आप स्क्रीन के अंदर अपना TERM वैरिएबल बदल रहे हैं, तो आप हर तरह की परेशानी को आमंत्रित कर रहे हैं।
वोमबेल

अच्छी तरह से मेरे Solaris 2.6 नोड्स स्क्रीन मूल्यों पर सेट TERM मानों के साथ अच्छा नहीं खेलते हैं।
डेविड मैकिन्टोश

3
"$TERM" = "screen"विकल्प के sudoविपरीत, पर्यावरण में प्रवेश करते समय संरक्षित होना प्रतीत $STYहोता है।
मेलेबियस

29

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


4
हम इसे क्यों नहीं बढ़ा रहे हैं।
आंद्रेकेआर

यह निश्चित रूप से यहां सबसे अच्छा समाधान है।
फेलिक्स जेन

2
@womble यदि आप एक अज्ञात प्रोग्राम में हैं, जो कि महत्वपूर्ण अनुक्रमों और आदेशों की प्रतिक्रिया के रूप में यादृच्छिक विनाशकारी चीजें कर सकता है, तो कुछ भी सुरक्षित नहीं है।
गुरजिएह

2
@AndreKR: यह एक पटकथा में काम नहीं करता है
फ्रैंक Meulenaar

1
क्योंकि स्क्रीन में एक स्क्रीन और दूसरी स्क्रीन में स्क्रीनिंग नहीं हो रही है, और मुझे शाब्दिक रूप से यह देखने की जरूरत है कि क्या $ STY भी सेट है। जो किसी कारण से खाली आ रहा है।
ब्रायन थॉमस

14

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

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


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

6

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


मुझे लगता है कि मुझे पता है कि आप क्या सुझाव दे रहे हैं, और यह कुछ स्थितियों में इस समस्या से पूरी तरह से बच सकता है । यदि आप एक उदाहरण .screenrcफ़ाइल को दिखा कर (उदाहरण के लिए) इसका वर्णन करते हैं तो यह अधिक उपयोगी हो सकता है ।
jvriesem

0
screen -ls

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

screen -r sessioninfo

एक अलग करने के लिए फिर से कनेक्ट करने के लिए, अगर अलग।

screen -D -r sessioninfo

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


1
इस सवाल का जवाब नहीं है।
Womble

-1

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

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

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

उदाहरण अलग:

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

6
अगर स्क्रीन कहीं और संलग्न हैं तो यह एक मुद्दा हो सकता है।
डेनिस नोल्टे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.