Reattach या नामित स्क्रीन सत्र बनाएं? (या लगातार स्क्रीन सत्र)


27

मूल रूप से मेरे पास एक दूरस्थ स्क्रीन सत्र है, जिसे मैं स्वचालित रूप से रीटच करने की इच्छा रखता हूं .. वर्तमान में मैं इसे निम्न कमांड (एक iTerm बुकमार्क के रूप में, या एक उपनाम) के साथ कर रहा हूं

ssh host -t screen -x thesessionname

यह ठीक काम करता है, लेकिन अगर सत्र किसी भी कारण से मर जाता है, तो मैं चाहूंगा कि जब मैं अगला कनेक्ट करूं तो इसे फिर से बनाया जाए। -Rके लिए झंडा screenहै लगभग सही:

ssh host -t screen -R -S thesessionname

.. लेकिन अगर सत्र पहले से ही संलग्न है, तो दूसरा सत्र हो जाता है (जैसा -Rकि पहले अलग किए गए सत्र के लिए सरल दिखता है, अगर कोई नहीं मिला तो यह एक नया बनाता है)

क्या -Rसंलग्न सत्रों के लिए ध्वज को देखने का एक तरीका है , और केवल एक नया निर्माण करें यदि thesessionnameमौजूद नहीं है?

यदि यह आसानी से संभव नहीं है, तो जब मैं मर जाता हूं तो मैं स्क्रीन सत्र को स्वचालित रूप से कैसे बना सकता हूं? शायद एक स्क्रिप्ट क्रोन के माध्यम से चलती है जो नामित सत्र के लिए दिखती है, जिससे यह मौजूद नहीं होना चाहिए?

जवाबों:


32

स्क्रीन को प्रयास करने के बारे में थोड़ा और अधिक लगातार बताएं:

-D -R
    Attach here and now. In detail this means: If a session is run-
    ning,  then  reattach.  If necessary detach and logout remotely
    first.  If it was not running create it and  notify  the  user.
    This is the author's favorite.

इसलिए दोनों को मिलाएं और आपके पास अपना समाधान होना चाहिए ("-DR" "-D -R" के बराबर है):

screen -DR <yoursession> 

इसके अतिरिक्त और जानने के लिए उपयोगी, आप इसके साथ सत्र चला सकते हैं:

screen -ls

5
बिल्कुल सही, screen -x -R -S mainजो मैंने प्रयोग किया है, वही काम करता है (मजबूर-टुकड़ी के बिना भी), धन्यवाद!
dbr

कभी-कभी आप उपयोग करना चाहते हैं sceen -r <yoursession>, एक त्रुटि देगा जब यह पहले से संलग्न है (एक नया सत्र बनाने के बजाय)।
खतरे '

11

कुछ अच्छे विकल्प। सबसे पहले, मेरा पसंदीदा:

screen -x -R

यह उपलब्ध पहले स्क्रीन सत्र से जुड़ा होगा (यदि दूसरा कनेक्शन जुड़ा हुआ है) साझा करना, और यदि कोई स्क्रीन सत्र नहीं हैं, तो एक नया प्रारंभ करें।

screen -d -RR

इसके लिए डॉक्स कहते हैं "एक सत्र को रीटेट करें और यदि आवश्यक हो तो इसे अलग करें या बनाएं। यदि एक से अधिक सत्र उपलब्ध हैं तो पहले सत्र का उपयोग करें।" असल में, डबल-आर इसे संलग्न करने के लिए पहले सत्र की तलाश करता है।

screen -D -RR

"यहां और अभी संलग्न करें। जो भी इसका मतलब है, बस करो।" अलग-अलग संलग्न सत्रों को अलग और अलग करेगा और पहले सत्र में इसे संलग्न कर सकता है। मूल रूप से, मौजूदा सत्र से जुड़ने के लिए जो कुछ भी करना है, वह करता है और अगर वहाँ कुछ भी नहीं है तो एक नया बनाता है।

बहुत पहले (-x -R) कम से कम समस्याएं पैदा करने की संभावना है (आपके अन्य कनेक्शन को अलग नहीं करेगा), लेकिन बस सादा हमेशा कुछ के साथ संलग्न करता है अगर इसमें संलग्न करने के लिए कुछ भी है और कुछ बनाने के लिए अगर इसमें संलग्न करने के लिए कुछ भी नहीं है।


1
ये सभी अच्छे / उपयोगी विकल्प हैं, लेकिन उनमें से कोई भी मूल प्रश्न का उत्तर नहीं देता है, जो कि नाम से एक सत्र से जुड़ा (पुनः) था ।
डैनियल

5

मैं उपयोग करता हूं

screen -dRRS sessname

मैं नहीं चाहता कि मेरा पूरा लॉगिन अन्य शेल पर गिरा, जैसे कि -Dकरता है, और मैं निश्चित रूप से मल्टी-अटैच मोड नहीं चाहता हूं -x

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