पूर्ण GNU स्क्रीन सत्र स्थिति सहेजें


32

क्या जीएनयू स्क्रीन विंडो (या सिर्फ एक मानक शेल) की "स्थिति" को जारी रखना संभव है ताकि मैं रिबूट के बाद सब कुछ पुनः लोड कर सकूं:

  • खोले गए खोलों की संख्या
  • प्रत्येक खोल का नाम
  • प्रत्येक शेल की वर्तमान निर्देशिका
  • प्रत्येक खोल का इतिहास
  • यदि संभव हो, तो उनके पर्यावरण चर

जवाबों:


19

पूर्ण स्क्रीन सत्र को सहेजना वास्तव में संभव नहीं है।

आप जो कर सकते हैं वह एक उचित निर्माण करना है .screenrc जो आपके सिस्टम को पुनरारंभ करने के बाद कुछ चीजों को सेटअप करेगा।

आपके द्वारा सूचीबद्ध चीजों की कुछ टिप्पणियाँ यहाँ दी गई हैं:

  • खोले गए खोलों की संख्या
  • प्रत्येक खोल का नाम
  • प्रत्येक शेल की वर्तमान निर्देशिका

मैं .screenrcस्टार्टअप पर कुछ विशिष्ट गोले खोलने के लिए अपने में कुछ इस तरह का उपयोग करता हूं :

## set the default shell
shell                   zsh

# screens
screen -t 'zsh'
screen -t 'mutt' mutt
screen -t 'zsh' /home/user/bin/scriptToRun
[..]

आपको अपने विंडो नाम के रूप में '' के बीच स्ट्रिंग मिलेगी और नाम के बाद कमांड आपके डिफ़ॉल्ट शेल पर निष्पादित होगी। उदाहरण के लिए, किसी भी स्क्रिप्ट को शामिल करें, विशिष्ट निर्देशिका में परिवर्तन और कुछ लॉग खोलें।

  • प्रत्येक खोल का इतिहास

क्या आपने कभी अपने सत्रों में गोले के इतिहास को साझा करने के बारे में सोचा है? IMHO यह चीजों को और अधिक आसान बनाता है। ZSH में अपने साथ किया setopt SHARE_HISTORYमें अपने.zshrc

  • यदि संभव हो, तो उनके पर्यावरण चर

यदि आपको वास्तव में इसकी आवश्यकता है और आप किसी भी ट्रेड-ऑफ को नहीं चाहते हैं, तो आप एक शेल स्क्रिप्ट के बारे में सोच सकते हैं, जो स्क्रीन की वर्तमान स्थिति को पढ़ता है, शेल की संख्या, पर्यावरण चर आदि को बचाता है और इस जानकारी को एक स्टार्टअप स्क्रिप्ट में डालता है। आपके द्वारा बुलाया गया .screenrc। मेरे लिए यह प्रयास के लायक नहीं होगा क्योंकि मैं रिबूट के बाद एक स्वच्छ वातावरण की सराहना करता हूं, अगर मैं स्क्रीन के लिए डिफ़ॉल्ट विंडोज़ को अनुकूलित कर सकता हूं।


आपके सुझाव के लिए धन्यवाद। मुझे बैश पर अपने इतिहास को साझा करने का एक तरीका मिला (जो कि zsh के साथ उतना सीधा नहीं है) इसलिए मेरे पास आज्ञाओं की एक धारा है जो लगातार बनी रहती है। .Rcrc के बारे में, मुझे इसके बारे में सोचना चाहिए था। दुर्भाग्य से, ऐसा लगता है कि आप केवल कुछ स्क्रिप्ट्स पर अमल कर सकते हैं ('cd' जैसे कमांड काम नहीं करते हैं), लेकिन यह ठीक होना चाहिए। अगर मैं एक स्क्रिप्ट के साथ एक शेल को इनिशियलाइज़ कर सकता हूं तो मुझे पर्यावरण चर का बुरा नहीं लगता।
बारथेलेमी

सीडी आपके शेल का एक अंतर्निहित कार्य है, एक सीडी कमांड एक "शेल" के बाहर कोई मतलब नहीं होगा :-) लेकिन आप बस एक स्क्रिप्ट को शामिल कर सकते हैं जिसमें शबंग के बाद एक सीडी / फू / बार शामिल है। फिर आपका नया शेल इस डायरेक्टरी में बदल जाएगा।
इकोक्स

हाँ, मैं इस भेद को समझता हूँ, मैंने सिर्फ यह सोचा था कि कमांडों को किसी तरह शेल में भेज दिया गया था और फिर शेल में निष्पादित किया गया था। लेकिन मुझे इनिशियलाइज़ेशन स्क्रिप्ट लिखने में कोई समस्या नहीं है :-) साझा इतिहास एक भयानक विचार था btw, मुझे यह बहुत पसंद है।
बार्टलेमी

10

मैंने स्क्रीन-सेशन नामक एक प्रोजेक्ट पर ठोकर खाई है । यह आपको कुछ हद तक जीएनयू स्क्रीन सत्रों को बचाने और पुनः लोड करने की अनुमति देता है।


2

क्रायोपिड नामक एक प्रक्रिया की स्थिति को स्थिर करने के लिए एक उपकरण है । हालाँकि, वर्तमान में यह GNU स्क्रीन के साथ काम नहीं करता है क्योंकि यह उप-प्रक्रियाओं के पदानुक्रम को फिर से बनाने का समर्थन नहीं करता है। वे कहते हैं कि वे भविष्य में इसे हासिल करना चाहते हैं, लेकिन यह परियोजना फिलहाल बहुत सक्रिय नहीं है। फिर भी, आप उनकी प्रगति का पता लगाना चाह सकते हैं।


0

मैंने वर्षों पहले सोलारिस पर इसी तरह की चीज बनाई थी। स्क्रीन-संबंधी भी नहीं; यह सत्र संबंधित था। "अगर $ TTY = जो भी हो"। इकोक्स का सही विचार है।

टिप: यदि आप कई मशीनों में ऐसा कर रहे हैं, तो पहचानें कि प्रत्येक मशीन की अपनी परिभाषा है कि जब आप वहां लॉगिन करते हैं तो क्या करना चाहिए, बजाय इसके कि आपके एनएफ़एस घुड़सवार / घर या समान के समान हो।

HTH, -pbr

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