जब आप एक टूटे हुए 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वही करता है?