दूरस्थ सत्रों को जीवित रखने के लिए मैं अक्सर GNU स्क्रीन का उपयोग करता हूं। जब से मैं Emacs में रहता हूं, मैं वास्तव में Emacs के भीतर से चल रहे दूरस्थ शेल सत्र को फिर से शुरू करने में सक्षम होना चाहता हूं।
GNU स्क्रीन टर्मिनल मल्टीप्लेक्सिंग और कैरेक्टर ड्रॉइंग जैसी सभी प्रकार की फैंसी चीजों को लागू करती है जिनकी मुझे वास्तव में आवश्यकता नहीं है। मैं वास्तव में केवल वियोज्य और फिर से शुरू होने वाले शैल सत्रों में रुचि रखता हूं, इसलिए जितना dtach
संभव हो उतना सरल हो सकता है।
मैं SSH सत्र खोलने और ( यहाँ से लिया गया ) dtach
में चल रहे सत्र को फिर से जोड़ने के लिए इस फ़ंक्शन का उपयोग कर रहा हूँ :shell-mode
(defun ssh-dtach (host)
"Open SSH connection to remote host and attach to dtach session."
(interactive)
(let ((explicit-shell-file-name "dtach")
(explicit-dtach-args '("-A" "/tmp/emacs.dtach" "-z"
"/bin/bash" "--noediting" "-login"))
(default-directory (format "/ssh:%s:" host)))
(shell (format "*ssh %s*" host))))
मामूली shell-mode
झगड़े के बावजूद, यह लगभग ठीक काम करता है , लेकिन एशेल में यह बस एक सबप्रोसेस शुरू होता है, इसलिए टर्मिनल बहुत सीमित हो जाता है (जैसे कोई पथ स्वत: पूर्णता नहीं)।
dtach
दूरस्थ सर्वर से कनेक्ट करने पर मैं रनिंग सत्र से कनेक्ट करने के लिए Eshell को कैसे कॉन्फ़िगर कर सकता हूं ?
संपादित करें: जैसा कि मैंने इस समस्या के बारे में फिर से सोचा, मुझे एहसास हुआ कि यह पूरी तरह से स्पष्ट नहीं है कि मैं वास्तव में क्या चाहता हूं। यहाँ एक सूची है:
- मैं कुछ सबप्रोसेस में नहीं बल्कि एशेल में रहना चाहता हूं
- रीटचिंग पर मैं चाहता हूं कि रिमोट सेशन का आउटपुट रिप्ले हो और रिमोट कमांड हिस्ट्री उपलब्ध हो
- मैं एक दूरस्थ दूरस्थ प्रक्रिया के साथ बातचीत करने में सक्षम होना चाहता हूं (जैसे
yum install
मेरे इनपुट की प्रतीक्षा में चलने वाला )
ऐसा लगता है कि मुझे dtach के साथ यह सब काम करने के लिए थोड़ा बहुत विशिष्ट कोड लिखना होगा।
eshell
क्या स्थानीय है और क्या रिमोट है और क्या एक बाहरी कमांड और एक elisp समारोह है धुंधला कर रहे हैं के बीच लाइनों। मैं इसे और भी फ़िज़ियर बनाना चाहता हूं ताकि दूरस्थ रूप से चलने वाली प्रक्रियाओं को पारदर्शी तरीके से बातचीत की जा सके जैसे कि वे स्थानीय थे। मुझे लगता है कि चल रहे सत्र को फिर से शुरू करने के समान ही होगा।
screen
अंदर चल shell-mode
रहा है अच्छी तरह से काम नहीं कर रहा है, क्योंकि screen
एक डंब टर्मिनल से अधिक की जरूरत है।
eshell
है, शेल है - इसलिए अवधारणात्मक रूप से यह मुझे लगता है कि आप वह नहीं कर सकते जो आप चाहते हैं, जब तक कि आप dtach सत्र में एशेल बफर के साथ एक रनिंग एमएसीएस का उपयोग न करें। या मैं यहाँ गलत हूँ?