क्या मेरे .bashrc में "स्क्रीन -r" डालना एक अच्छा विचार है?


17

मैं अपने सर्वर पर ssh सत्र को जीवित रखने के लिए स्क्रीन का उपयोग करना चाहूंगा। यह अच्छा होगा यदि मैं लॉग इन करते समय अपने उपयोगकर्ता के लिए किसी भी चल रहे सत्र को स्वचालित रूप से फिर से शुरू कर सकता हूं। ऐसा करने का सीधा तरीका मेरे .bashrc में "स्क्रीन -r" जोड़ना होगा, और यह ठीक काम करने लगता है। मैं सोच रहा हूं कि क्या यह उन परिस्थितियों में कुछ भी तोड़ देगा, जिन्हें मैंने अभी तक परीक्षण नहीं किया है। यहाँ कोई भी व्यक्ति जो मुझे बता सकता है कि क्या यह मुझे करना चाहिए?

जवाबों:


20

आप की जरूरत है screen -R -dअगर एक अस्तित्व के लिए दोनों स्वचालित रूप से मौजूदा सत्र के लिए देते हैं और नहीं तो एक सत्र बनाने।

सुनिश्चित करें कि आप केवल इंटरैक्टिव गोले पर ऐसा करते हैं । बैश स्रोतों ~/.bashrcभी गैर-सहभागी गोले के लिए जब अपनी मूल प्रक्रिया rshd या sshd है (इस दस्तावेज़ में बताया गया है, लेकिन यह याद आती है आसान है)। आप बता सकते हैं कि एक शेल इंटरैक्टिव है क्योंकि $-इसमें शामिल है i

case $- in
  *i*) screen -Rd;;
esac

यह आसानी से आपको अलग-अलग टर्मिनलों में अलग-अलग स्क्रीन सत्र चलाने की अनुमति नहीं देगा।

आपको स्क्रीन से अलग करने की आवश्यकता होगी, फिर लॉग आउट करने के लिए मूल शेल से बाहर निकलें। के exec screenबजाय का उपयोग करके इसे हल किया जा सकता है screen

यदि आप एक लॉगिन शेल के अलावा एक शेल शुरू करते हैं, तो आपको स्क्रीन में डाल दिया जाएगा, जो कि वह नहीं है जो आप ज्यादातर समय चाहते हैं। मैं कम से कम इसे प्रतिबंधित कर सकता हूं जब आप एक इंटरैक्टिव ssh सत्र में सीधे चल रहे हैं, आपके साथ कुछ इस तरह से~/.bash_profile :

case "/$(ps -p $PPID -o comm=)" in
  */sshd) screen -R -d;;
esac

जब आप अपने साथ जटिल चीजें करते हैं तो सावधान रहें .bashrc को एक त्रुटि के रूप में जो शेल से बाहर निकलने का कारण बनता है जिससे लॉग इन करना मुश्किल होगा।


मैं क्या सलाह देता हूं वह सर्वर पर आपकी शेल इनिशियलाइज़ेशन फ़ाइलों को संशोधित नहीं करने के लिए है, लेकिन इसके बजाय क्लाइंट से स्पष्ट रूप से स्क्रीन चलाएं

ssh -t host.example.com screen -R -d

(आप संभवतः क्लाइंट पर एक शेल उर्फ ​​या डेस्कटॉप वातावरण शॉर्टकट बनाएंगे।) इस तरह आप आसानी से स्क्रीन नहीं चलाने का विकल्प चुन सकते हैं, एक वैकल्पिक सत्र नाम और इतने पर निर्दिष्ट कर सकते हैं।


उत्तम। मैन पेज में होना चाहिए।
marcusw

यह ssh चलाने के लिए screen -D -Rया भी बेहतर नहीं है screen -D -RR?
niutech

2

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

मुझे लगता है कि जो कुछ भी बाहर नहीं निकलता है वह आपके एक्स स्टार्टअप को लटका सकता है। इसमें शामिल होंगे screen -r


X सर्वर स्टार्टअप स्क्रिप्ट नहीं चलेगी .bashrc। लेकिन ऐसी अन्य परिस्थितियां हैं जहां यह एक समस्या होगी, उदाहरण के लिए जब दौड़ना ssh host.example.com somecommand(अजीब तरह से, .bashrcफिर भी चला जाता है )।
गिल्स एसओ- बुराई को रोकना '

यदि आप "उपयोगकर्ता परिभाषित सत्र" चुनते हैं तो यह कुछ विकृतियों पर है। उबंटू पर, यह स्रोत .profile स्पष्ट रूप से, दूसरों को एक लॉगिन शेल के अंदर से .xsession कहते हैं, जो आम तौर पर .bash_profile, और अधिकांश उपयोगकर्ता स्रोत .bashrc उनके अंदर .bash_profile से होता है।
मिकेल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.