जब मैं एक एसएसएच सत्र शुरू करता हूं जो लंबे समय से चलने वाली कमांड को निष्पादित करता है, तो Ctrl+ C(SIGINT) हैंडलिंग के साथ क्या होता है ?
मैं देख सकता हूं कि SSH सत्र बंद है, लेकिन मुझे यकीन नहीं है कि सबसे पहले SIGINT कौन मिलता है: क्या यह है ...
दूरस्थ लंबे समय से चल रही कमान? वह है, (ए) रिमोट कमांड में सिग्नल हैंडलर को कहा जाता है और रिमोट कमांड को रोक देता है, (बी) शेल जो इसे स्पैन करता है वह यह पता लगाता है कि कमांड बंद हो गया है, और साथ ही बंद हो जाता है (सी) रिमोट sshd शेल को रोक देता है, इसलिए यह कनेक्शन बंद कर देता है
या
स्थानीय ssh संकेत प्राप्त करता है, और कनेक्शन बंद कर देता है।
मुझे लगता है कि (1) हो रहा है, लेकिन यह सुनिश्चित करना चाहते हैं।
मैं इस मामले में SIGINTs के शेल हैंडलिंग के साथ क्या होता है, इसके बारे में भी अनिश्चित हूं। उदाहरण के लिए, यदि मैं ...
ssh remote 'while true ; do sleep 1 ; date ; done'
और Ctrl+ C, फिर रिमोट कनेक्शन गिरा दिया जाता है। क्या एक शेल के तहत रिमोट कमांड चलाने का एक तरीका है जो Ctrl+ के बाद भी जीवित रहेगा C? यही है, इस मामले में, लूप को रोकें और मुझे दूरस्थ शेल पर काम करने की अनुमति दें?
ssh remote command
, जैसा कि विरोध किया गया हैssh remote
) को मार दिया जाएगा। दूरस्थ पक्ष शायद (ओएस पर निर्भर करता है) तब तक चलता रहता है जब तक वह बंद सॉकेट को पढ़ने या लिखने की कोशिश नहीं करता। यदि आप चाहते हैं कि आपके सभी कीस्ट्रोक्स, जिनमें ctrl-C भी शामिल है, को रिमोट पर उपयोग किया जाएssh remote
।