2012-01-20 12 views
12

मान लें कि आप एक स्थानीय एममैक्स खोल से रिमोट सर्वर पर काम करते हैं (M-x shell से शुरू हुआ)। यदि आप एक ऐसी प्रक्रिया निष्पादित करते हैं जो बहुत अधिक समय लेता है (उदाहरण के लिए फाइलों की एक बड़ी मात्रा वाली निर्देशिका में ls), तो आप उस प्रक्रिया को रोकना चाहेंगे (टर्मिनल में control-c का उपयोग करेगा)। मैंने C-c C-c की कोशिश की लेकिन यह पूरे खोल को मारता है ... मैं केवल दूरस्थ सर्वर पर चल रही प्रक्रिया को कैसे मार सकता हूं, न कि संपूर्ण खोल?खोल को मारने के बिना रिमोट प्रक्रिया को कैसे मारें (सी-सी सी-सी भी खोल को मारता है ...)

अद्यतन

चरण-दर-चरण:

1) M-x shell (execute on local machine) 
2) ssh [email protected] (execute on local machine) 
3) sleep 60 (execute on remote machine) 
4) C-c C-c (execute in the current shell) 

=> के बजाय अभी भी दूरस्थ होस्ट और सिर्फ नींद आदेश पर किया जा रहा है की हत्या किए जाने, पूरे दूरस्थ कनेक्शन बंद हो और आप आपकी स्थानीय मशीन पर फिर से हैं।

+0

मैं आपके द्वारा वर्णित समस्या को पुन: पेश नहीं कर सकता। आप इसका अनुभव कैसे करते हैं इसके बारे में चरण-दर-चरण विवरण के बारे में कैसे? – Sean

+0

धन्यवाद, शॉन। मैंने प्रश्न-दर-चरण विवरण –

+0

सहित प्रश्न को अद्यतन किया है, मेरे पास zsh और emacs 21.4.1 का उपयोग करके एक ही समस्या है, इसलिए एक पुराना पुराना ... – sandos

उत्तर

21

जब मैं आपके द्वारा सूचीबद्ध चरणों का पालन करता हूं, तो मैं खुद को दूरस्थ शेल प्रॉम्प्ट पर वापस पाता हूं। मैं Emacs 23.1.1 का उपयोग कर रहा हूँ।

मुझे लगता है कि सी क्यू सी-सी आरईटी टाइपिंग भी दूरस्थ प्रक्रिया में व्यवधान, मुझे फिर से दूरदराज के खोल प्रॉम्प्ट पर हो जाता है। आप इसे वैकल्पिक दृष्टिकोण के रूप में आजमा सकते हैं।

+1

हाय सीन, मदद के लिए धन्यवाद। दरअसल, 'सी-क्यू सी-सी आरईटी' काम करता है। मुझे अभी भी आश्चर्य है कि क्यों 'सी-सी सी-सी' काम नहीं कर रहा है। मैं इसका उपयोग कर रहा हूं: जीएनयू Emacs 24.0.92.1 (x86_64-apple-darwin, NS apple-appkit-1038.36) 2012-01-15 के bob.porkrind.org पर [मैक ओएस एक्स 10.7.2 पर]। –

+0

सी-क्यू सी-सी मेरे लिए और मेरे पुराने emacs + zsh काम करता है! धन्यवाद! – sandos

+0

धन्यवाद @ सीन, आपको अपने उत्तर में [यह लिंक] (https://www.cs.utah.edu/dept/old/texinfo/emacs18/emacs_8.html) शामिल करना चाहिए क्योंकि यह बताता है कि 'सीक्यू' डालेगा अगले चरित्र बफर में टाइप किया गया। –

-1

अगर आप Emacs के भीतर से आदेश को मारने के लिए चाहता हूँ यह मेरे लिए स्पष्ट नहीं है, लेकिन आप बारी-बारी से (यदि आप स्क्रीन या tmux उपयोग कर रहे हैं) एक और कनेक्शन या विंडो खोलने सकता है और मानक

ps aux | grep hungprocess 

करते हैं और तो

kill hungprocess_pid 

किसी कारण से मैं यह सोच कर कि इस तरह के एक विधि काम नहीं होगा और कहा कि मैं भी Emacs नीचे ले पहुंचते हैं रखा। मैंने कई तरीकों का उपयोग कई बार किया है जब मैंने emacs में एक gpg एन्क्रिप्टेड फ़ाइल खोलते समय अपना जीपीजी पोनरी एजेंट स्थापित नहीं किया है। Emacs/gpg एक जीयूआई उत्पन्न करने की कोशिश करेगा और इसलिए एमएआई में इनपुट के लिए प्रतीक्षा कर रहा है, जब मैं दूरस्थ रूप से ssh'ed में हूं।

संबंधित मुद्दे