आप की जरूरत है 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
(आप संभवतः क्लाइंट पर एक शेल उर्फ या डेस्कटॉप वातावरण शॉर्टकट बनाएंगे।) इस तरह आप आसानी से स्क्रीन नहीं चलाने का विकल्प चुन सकते हैं, एक वैकल्पिक सत्र नाम और इतने पर निर्दिष्ट कर सकते हैं।