स्क्रीन सत्र के लिए नाम सेट करना


44

क्या यूनिक्स स्क्रीन सत्र के लिए एक विशेष नाम देने का कोई तरीका है? उदाहरण के लिए, मान लें कि मैं एक ही कार्यक्रम कई बार चला रहा हूं, प्रत्येक अलग-अलग मापदंडों के साथ और मैं बताना चाहता हूं कि कौन सा है।


प्रोग्रामिंग का सवाल नहीं। सुपरयूजर या यूनिक्स में जाना चाहिए।
0xC0000022L

जवाबों:


54

आप -S nameविकल्प के साथ इसे शुरू करते समय एक सत्र का नाम दे सकते हैं । एक रनिंग स्क्रीन के भीतर से, आप इसे टाइप करके बदल सकते हैं CTRL-a, :sessionname name। आप साथ स्क्रीन सत्र चला रहे देख सकते हैं screen -ls, और नाम के साथ एक से कनेक्ट कर सकते हैं screen -xS name

एकल स्क्रीन सत्र के भीतर, आप प्रत्येक विंडो को नाम भी दे सकते हैं। यह लिखकर करें CTRL-a, Aफिर आप जो नाम चाहते हैं। आप टाइप की गई खिड़कियों की इंटरेक्टिव सूची देख सकते हैं CTRL-a, ", और उस सूची से स्विच करना चाहते हैं, जिसका चयन करें।

स्क्रीन के भीतर स्क्रीन और टर्मिनल दोनों का नामकरण वास्तव में यह याद रखने में मददगार है कि वे क्या हैं और आपने उन्हें पहले स्थान पर क्यों शुरू किया।


प्रारंभ होने के बाद (संभवत:) स्क्रीन सत्र का नाम बदलना :sessionname NEWNAME, लेकिन यह "आमतौर पर हतोत्साहित" है। $STYवातावरण चर अभी भी मूल नाम को दर्शाता है। screenमैनुअल देखें : gnu.org/software/screen/manual/html_node/Session-Name.html
कीथ थॉम्पसन

22

यहाँ दो अवधारणाएँ हैं, और मुझे यकीन नहीं है कि आपके मन में कौन सी बात है:

  • आपके पास कई स्क्रीन विंडो हो सकती हैं। प्रत्येक विंडो एक शेल या अन्य प्रोग्राम चलाती है। सभी विंडो एक ही प्रक्रिया द्वारा होस्ट की जाती हैं। C-a cएक विंडो बनाता है, C-a nऔर C-a pअगली / पिछली विंडो पर स्विच करता है, और इसी तरह।
  • आपके पास कई स्क्रीन सत्र हो सकते हैं। प्रत्येक सत्र को अपनी प्रक्रिया द्वारा होस्ट किया जाता है और अन्य सभी सत्रों से स्वतंत्र होता है। बिना किसी रीटचैट ( -rया -R) के विकल्प के बिना स्क्रीन शुरू करना एक नया सत्र बनाता है।

विंडोज़ के पास शीर्षक हैं, जिन्हें -tकमांड लाइन विकल्प, C-a Aकुंजी बाइंडिंग, titleकमांड या \ekएस्केप सीक्वेंस के माध्यम से सेट किया जा सकता है । देखें shellter का जवाब अधिक जानकारी के लिए।

सत्रों के नाम हो सकते हैं। आप आम तौर पर -Sविकल्प के साथ कमांड लाइन पर नाम सेट करेंगे ; यदि आप एक नाम निर्दिष्ट नहीं करते हैं, तो स्क्रीन एक बना देता है। यदि आप कई स्क्रीन सत्रों का उपयोग करते हैं, तो आप आमतौर पर उन्हें अलग-अलग सत्र नाम देंगे। आप के साथ चल रहे स्क्रीन सत्र को सूचीबद्ध कर सकते हैं screen -ls; प्रत्येक सत्र लाइन पर पहला शब्द है 12345.sessionnameजहां 12345 स्क्रीन प्रोसेस आईडी है। अपने नाम या प्रक्रिया आईडी के माध्यम से संकेतित सत्र का उपयोग करना screen -r sessionnameया screen -r 12345फिर से शुरू करना।


1
डिफ़ॉल्ट कुंजी बाइंडिंग में, शीर्षक बदलने के लिए आपको Ca A. का उपयोग करना होगा
enzotib

11

आह ... स्क्रीन, यह मुझे वापस लेता है ;-)

एक खिड़की के लिए

-t name
    sets the title (a.k.a.) for the default shell or specified program. 
    See also the "shelltitle" .screenrc command.

आपके .screenrc से शुरू किए गए उत्परिवर्ती सत्रों के लिए

screen -t top 2 nice top
screen -t ....

यहां स्क्रीन के लिए मैन-पेज की एक ऑन-लाइन कॉपी का लिंक दिया गया है

संपादित करें: जोड़ा गया

वर्तमान स्क्रीन नाम बदलने के लिए, शेल स्क्रिप्ट टूल बनाएं

cat scrnTitle.sh
#/bin/bash
echo -ne '\ek${0}\e\\'

बिना काम किए, मेरे पास उस सिस्टम पर स्क्रीन उपलब्ध नहीं है जिस पर मैं काम कर रहा हूं।


धन्यवाद, यह बहुत मदद करता है। क्या पहले से मौजूद स्क्रीन सेशन का नाम बदलने के लिए कुछ भी है?
वास्तव में

@ शार्लेट: संपादन देखें। वोट के लिए धन्यवाद!
शेल्टर

अच्छा जवाब @shellter! मैं उत्सुक हूं, क्या आपने कहा कि "मुझे वापस ले जाता है" का मतलब है कि आप इन दिनों (जैसे tmux) कुछ और का उपयोग करते हैं, या सिर्फ यह 32 साल से अधिक पुराना है ?
टूटुज्जु

1
@tutuDajuju: अब मैं इसके बारे में सोचता हूं, तो मुझे screenकम से कम 25 साल लग गए हैं। मुझे वापस ले जाता है, क्योंकि अब यह एक विशेष उपयोग का मामला है जो मुझे ले जाएगा screen। आम तौर पर मैं बस खोलना जारी रखता हूं X-Terms, लेकिन मुझे याद है कि जब X486 पीसी पर चलना असंभव लगता था ;-) चीयर्स!
शेल्टर

@shellter FYI करें, मैंने 1992 में 8Mb रैम के साथ 486 PC पर X चलाया ...
Eno

4

दौड़ते समय screen:

Ctrl+a(या जो भी आपका screenभागने का क्रम है)A


3

ऊपर दिए गए उत्तर आपको पहले ही बता देते हैं कि स्क्रीन को नाम कैसे देना है जब आप इसे शुरू करते हैं। वे यह भी बताते हैं कि एक स्क्रीन को चालू करने के बाद उसका नाम नहीं बदला जा सकता है। विंडो शीर्षक सेट किया जा सकता है लेकिन स्क्रीन पर संलग्न करने के लिए उपयोग किया गया नाम pid.pty.host रहता है।

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

उदाहरण:

alias goncompile='screen -r 2354'

अपने आप से उपनाम आदेश जारी करना आपको याद दिलाएगा कि आपके पास कौन सी स्क्रीन हैं और आपके द्वारा उन्हें संलग्न करने के लिए आपके द्वारा निर्धारित की गई कमांड।

unaliasउन्हें हटाने के लिए उपयोग करें ।

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