जब आप एक टूटे हुए SSH सत्र को पुनः प्राप्त नहीं कर सकते हैं, तो आप SSH के अंदर चल रही प्रक्रिया को पुन: प्राप्त कर सकते हैं - कार्यात्मक रूप से जो हम चाहते हैं उसके बराबर।
अनुदेश
आपके मामले में, आप apt-get
एक नए एसएसएच सत्र, screen
सत्र या इस तरह से नियंत्रित होने की प्रक्रिया को संभाल लेंगे । इसके लिए मेरा पसंदीदा reptyr
आदेश है:
$ sudo apt-get install reptyr
$ ps ax | grep apt-get
10626 pts/8 R+ 0:32 apt-get upgrade
फिर, आप अपनी प्रक्रिया के लिए पाई गई पिड के साथ:
$ sudo reptyr -T 10626
या अगर वह काम नहीं करता है, तो कोशिश करें:
$ reptyr 10626
इस चरण के बाद, आपका सारा कीबोर्ड इनपुट आपके द्वारा लिए गए प्रोग्राम में चला जाता है। दुर्भाग्य से आप SSH सत्र का पुराना आउटपुट नहीं देखेंगे, जैसे कि apt-get
आउटपुट आपसे पुष्टिकरण के लिए पूछ रहा है।
स्पष्टीकरण
कई अन्य उपकरण हैं जो मूल रूप से reptyr
( ptrace
डिबग अनुलग्नक के माध्यम से ) के समान काम करते हैं । निम्नलिखित प्रश्नों और उत्तरों को देखें जहाँ उनकी चर्चा की गई है:
उपरोक्त निर्देशों में, डीबग अटैचमेंट reptyr 10626
का उपयोग करता है ptrace
जबकि sudo reptyr -T 10626
कमांड TTY चोरी का उपयोग करता है और बेहतर ( विवरण ) है।
अंत में, कारण है कि आप इस तरह से SSH सत्र नहीं ले सकते, क्योंकि एक sshd
प्रक्रिया को एक होस्ट टर्मिनल द्वारा नियंत्रित नहीं किया जाता है, इसके बजाय यह एक टर्मिनल का गुलाम हिस्सा प्रदान करता है - एक pts
उपकरण - जबकि मास्टर हिस्सा इसे नियंत्रित करता है। ग्राहक मशीन, यहाँ बीच में टूटे हुए SSH सत्र के साथ। जब आप इस तरह की sshd
प्रक्रिया को लागू करने के लिए बाध्य करते हैं reptyr -s <pid>
, तो आपका कीबोर्ड इनपुट उस प्रक्रिया में जाता है, न कि इसकी सक्रिय बाल प्रक्रिया। तो एक "Ctrl + Z" बस उसे मार देगा sshd
।
apt-get
प्रक्रिया अभी भी चल रही थी। यह SSH तक की पूरी प्रक्रिया श्रृंखला के साथ मर जाना चाहिए था। मैंने देखा है किdo-dist-upgrade
स्वचालित रूप सेscreen
/byobu
सत्र में शुरू होता है : शायद कुछ परिस्थितियों में,apt-get
वही करता है?