Eshell / TRAMP / dtach के साथ दूरस्थ शेल चलाने के लिए संलग्न करें


11

दूरस्थ सत्रों को जीवित रखने के लिए मैं अक्सर 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है, शेल है - इसलिए अवधारणात्मक रूप से यह मुझे लगता है कि आप वह नहीं कर सकते जो आप चाहते हैं, जब तक कि आप dtach सत्र में एशेल बफर के साथ एक रनिंग एमएसीएस का उपयोग न करें। या मैं यहाँ गलत हूँ?
टॉम रेग्नर

में eshellक्या स्थानीय है और क्या रिमोट है और क्या एक बाहरी कमांड और एक elisp समारोह है धुंधला कर रहे हैं के बीच लाइनों। मैं इसे और भी फ़िज़ियर बनाना चाहता हूं ताकि दूरस्थ रूप से चलने वाली प्रक्रियाओं को पारदर्शी तरीके से बातचीत की जा सके जैसे कि वे स्थानीय थे। मुझे लगता है कि चल रहे सत्र को फिर से शुरू करने के समान ही होगा।
8


@ एसडीएस: screenअंदर चल shell-modeरहा है अच्छी तरह से काम नहीं कर रहा है, क्योंकि screenएक डंब टर्मिनल से अधिक की जरूरत है।
रेकाडो

जवाबों:


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