मुझे कैसे पता चलेगा कि मैं एक लिनक्स "स्क्रीन" के अंदर चल रहा हूं या नहीं?


60

"स्क्रीन" एक प्रोग्राम को संदर्भित करता है जिसमें डिस्कनेक्ट किए गए सत्र को फिर से कनेक्ट करने का तरीका बताया गया है । यह एक अच्छी सुविधा है।

लेकिन एक सवाल है जो मैं वास्तव में जानना चाहूंगा। मुझे कैसे पता चलेगा कि मैं "स्क्रीन" के अंदर चल रहा हूं? अंतर यह है:

  • यदि हां, मुझे पता है कि मैं अपने शेल (बैश आदि) सत्र को खोए बिना, वर्तमान टर्मिनल विंडो को सुरक्षित रूप से बंद कर सकता हूं, जैसे, एक पुट्टी विंडो बंद करना।
  • यदि नहीं, तो मुझे पता है कि मुझे टर्मिनल विंडो बंद करने से पहले किसी भी लंबित कार्यों का ध्यान रखना होगा।

बेहतर है, मैं चाहूंगा कि यह स्थिति PS1 प्रॉम्प्ट में प्रदर्शित की जाए ताकि मैं इसे किसी भी समय स्वचालित रूप से देख सकूं।


3
यदि आप स्क्रीन के बजाय tmux का उपयोग करते हैं, तो आपको डिफ़ॉल्ट रूप से थोड़ा स्टेटस बार मिलता है। वे बुनियादी उपयोग के लिए बहुत समान हैं।
सैमुअल एडविन वार्ड

9
अपने कुलदेवता को मेज पर रखें, और उसे घूमने दें। यदि यह घूमता रहता है, तो आप ठीक हैं। और आप एक स्क्रीन में हैं:]
कोनरक

तुम भी स्क्रीन और tmux के साथ byobu का उपयोग कर सकते हैं । यह लॉगिन पर स्वचालित रूप से लोड करने के लिए सेटअप हो सकता है और फिर F6 कुंजी डिस्कनेक्ट और लॉग आउट कर सकता है।
mp3foley 20

जवाबों:


88

( StackOverflow पर और उपयोगकर्ता jho द्वारा लिखित " मैं कैसे बता सकता हूं कि क्या मैं एक स्क्रीन में हूं? " से चोरी हो सकता है । PS आप StackExchange साइटों पर एक डुप्लिकेट के लिए वोट नहीं कर सकते।)

जाँच करें $STY। यदि यह अशक्त है, तो आप "वास्तविक" टर्मिनल पर हैं। यदि इसमें कुछ भी है, तो यह उस स्क्रीन का नाम है जिसमें आप हैं।

यदि आप स्क्रीन में नहीं हैं:

eric@dev ~ $ echo $STY
eric@dev ~ $ 

यदि आप स्क्रीन में हैं:

eric@dev ~ $ echo $STY
2026.pts-0.ip-10-0-1-71

यदि आप स्क्रीन के बजाय tmux का उपयोग करते हैं, तो भी देखें $TMUX। इसे अपने प्रॉम्प्ट में जोड़ने के लिए, निम्न को अपने में जोड़ें ~/.bashrc:

if [ -n "$STY" ]; then export PS1="(screen) $PS1"; fi
if [ -n "$TMUX" ]; then export PS1="(tmux) $PS1"; fi

2
यदि आप sudoडिफ़ॉल्ट रूप से इसके माध्यम से कुछ चलाते हैं , तो इसमें पर्यावरण चर भी शामिल नहीं होंगे $STY। लेकिन है आम तौर पर sudo पर्यावरण के लिए प्रचारित किया है, तो हो सकता है के लिए या तो जाँच या$TERM $STY $TERM=="screen"
rcoup

14

$STYजिसके लिए देखो जो screenअपने आप से संवाद करने के लिए उपयोग करता है; $WINDOWतब वर्तमान screenविंडो नंबर होगा।


13

साधारण चेक जो मैं आमतौर पर इस्तेमाल करता हूं वह सिर्फ हिट करने के लिए है Ctrl- a:

  • यदि कर्सर लाइन की शुरुआत में कूदता है , तो मैं स्क्रीन सत्र के अंदर नहीं हूं ।

  • अगर कुछ नहीं होता है , तो मुझे पता है कि मैं स्क्रीन सत्र के अंदर हूं और मैंने स्क्रीन नियंत्रण कुंजी का उपयोग किया है। फिर मैं हिट करता हूं a(लाइन की शुरुआत में कूदता हूं ), w(वर्तमान स्क्रीन विंडो दिखाएं) या कमांड प्रॉम्प्ट पर वापस जाने के लिए कुछ अन्य "हानिरहित" स्क्रीन कमांड निष्पादित करें।

(बेशक, यह केवल तभी काम करता है जब आप वर्तमान में bash या किसी अन्य सॉफ़्टवेयर के टुकड़े को निष्पादित कर रहे हैं, जो "लाइन की शुरुआत में कूदता है" या Ctrl-a को मारते समय कुछ समान रूप से हानिरहित होता है।)


3
यह तभी काम करता है जब आपकी स्क्रीन कंट्रोल कुंजी डिफ़ॉल्ट रूप से Ctrl-a पर छोड़ दी जाती है।
श्रीवत्सआर

1
नियंत्रण कुंजी मारना + डीडी को अलग करेगा और ssh को समाप्त करेगा। आप अधिक सुविधा के लिए उस संयोजन को हिट कर सकते हैं
akostadinov

जबकि वास्तविक प्रश्न के लिए उत्तर ठीक है, यह विधि स्क्रिप्ट योग्य नहीं है।
निकोडेमस RIP

7

खैर, अधिकांश समय (अनुपस्थित किसी व्यक्ति की चीजों से पंगा लेने की कोशिश) आपका TERMसेट screen(या कम से कम screenकहीं उल्लेख ) होगा।

समस्या का आसान समाधान हर जगह सिर्फ रन स्क्रीन है। मैं इसके बिना घर नहीं छोड़ता।


$TERMभी आम तौर पर के माध्यम से प्रचार sudo, जो एक से अधिक है!
rcoup

7

मैं इसे अपने यहाँ रखता हूँ .bashrc:

 PS1='[\u@\h \W'
 if [ "$WINDOW" ]; then PS1="$PS1 ($WINDOW)"; fi
 PS1="$PS1]$"

यह मूर्खतापूर्ण नहीं है, लेकिन जब भी मैं एक नई स्क्रीन बनाता हूं, तो यह प्रॉम्प्ट में विंडो नंबर डालती है। अगर मैं नहीं चल रहा हूँ screen, कोई संख्या नहीं है।


3

मेरे पास और भी अच्छा तरीका है।

निम्नलिखित को अपने ~ / .rcrc में जोड़ें और आपको नीचे एक स्थिति रेखा दिखाई देगी (उल्टे पाठ को दिनांक, समय और सिस्टम लोड दिखाते हुए। नीचे दिए गए पेज पेज में अधिक भागने के कोड पाए गए हैं।

    hardstatus alwayslastline
    hardstatus string '%Y-%m-%d %c | %l'

स्रोत के साथ एक स्क्रीन सत्र में जब यह ctrl-a:source ~/.screenrc

मुझे इसके लिए लिनक्स जर्नल के काइल रंकिन को धन्यवाद देना होगा। Http://www.linuxjournal.com/article/10950 पर उनका शानदार लेख देखें । वह आदमी पृष्ठ अनुभाग जिसे वह संदर्भित करता है वह http://www.gnu.org/software/screen/manual/screen.html#String-Estract पर पाया जा सकता है ।


2

$$यदि आप एक स्क्रीन उदाहरण पाते हैं तो आप यह देखने के लिए प्रक्रिया ट्री से पुन: उठ सकते हैं। सटीक श्रृंखला संभवतः आपके सेटअप पर निर्भर करेगी - मेरे ओएस एक्स बॉक्स पर, एक zshअंदर की स्क्रीन loginमें उसके माता-पिता के SCREENरूप में , उसके दादा screen-दादी के रूप में और उसके परदादा के रूप में है।

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