एक सत्र सत्र को मारने के बाद भी मेरी दूरस्थ प्रक्रिया क्यों चलती है?


15

मैं एक स्थानीय शेल में इस कमांड को चलाकर एक रिमोट लॉगफ़ाइल सिलाई कर रहा हूँ:

ssh remotemachine tail -100f /path/to/error_file

जब मैं इस कमांड से ctrl-c करता हूं, तो ऐसा लगता है कि ctrl-c स्थानीय ssh प्रक्रिया को मारता है और रिमोट मशीन पर चलने वाली मेरी पूंछ को छोड़ देता है। मैं इस धारणा के तहत था कि कनेक्शन तोड़ने से हैंगअप सिग्नल (क्योंकि मैं nohup का उपयोग नहीं कर रहा हूं) भेजूंगा और प्रक्रिया को मार दूंगा, लेकिन यह स्पष्ट रूप से ऐसा नहीं है।

हैंगअप सिग्नल कब भेजे जाते हैं और कब नहीं, इस पर कोई और प्रकाश डाल सकता है? रिमोट मशीन उबंटू है, और यदि मेरा स्थानीय शेल ओएस एक्स बैश है तो दोनों में से कोई एक फर्क पड़ता है।

जवाबों:


13

यह व्यवहार रनिंग प्रक्रिया के लिए एक नियंत्रित टर्मिनल की कमी से उपजा है। जब दूरस्थ प्रक्रिया में एक नियंत्रित टर्मिनल नहीं होता है, तो आपके सत्र को संभालने वाली दूरस्थ ssh प्रक्रिया कमांड को मारने में असमर्थ होती है, जिसे एक ज़ोंबी राज्य में लटकाए जाने के लिए छोड़ दिया जाता है और अंत में इनिट द्वारा साफ किया जाता है।

आप इसे एक -t विकल्प के साथ चलाकर इसे प्राप्त कर सकते हैं, जो इसे एक नियंत्रित टर्मिनल देता है। जब आप अपने ssh कमांड को दूरस्थ रूप से ctrl-c करते हैं, तो यह प्रक्रिया समाप्त हो जाएगी।

आयकर विकल्प:

बल छद्म tty आवंटन। इसका उपयोग रिमोट मशीन पर मनमाने ढंग से स्क्रीन-आधारित कार्यक्रमों को निष्पादित करने के लिए किया जा सकता है, जो मेनू सेवाओं को लागू करते समय बहुत उपयोगी हो सकता है। एकाधिक-विकल्प विकल्प tty आवंटन को बाध्य करते हैं, भले ही ssh के पास कोई स्थानीय tty न हो।

जब आप इस विकल्प का उपयोग करते हैं तो आदमी ssh और आदमी sshd पर एक नजर डालते हैं क्योंकि एक नियंत्रित टर्मिनल होने के अन्य निहितार्थ हैं, जैसे कि भागने के पात्रों को भेजने की क्षमता।

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