Eshell / TRAMP / dtach ile çalışan uzak kabuğa ekle


11

Uzak oturumları canlı tutmak için genellikle GNU Ekranı kullanırım. Emacs'ta yaşadığımdan beri, Emacs içinden çalışan bir uzak kabuk oturumuna devam edebilmek istiyorum.

GNU Screen, gerçekten ihtiyaç duymadığım terminal çoğullama ve karakter çizimi gibi her türlü fantezi şeyi uygular. Gerçekten sadece çıkarılabilir ve devam ettirilebilir kabuk oturumlarına sahip olmakla ilgileniyorum, bu yüzden dtachyeterli kadar basit bir şey .

Bir SSH oturumu açmak ve ( buradan alınır ) çalışan bir dtachoturuma yeniden bağlanmak için bu işlevi kullanıyorum :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))))

Küçük tuhaflıklara rağmen, bu neredeyse iyi çalışıyor shell-mode, ancak Eshell'de bu sadece bir alt işlem başlatıyor, bu nedenle terminal çok sınırlı hale geliyor (örn. Yol otomatik tamamlama yok).

Eshell'i dtachuzak bir sunucuya bağlandıktan sonra çalışan bir oturuma bağlanacak şekilde nasıl yapılandırabilirim ?

EDIT: Bu sorunu tekrar düşündüğüm gibi, aslında ne istediğimi tamamen açık olmadığını fark ettim. İşte bir liste:

  • Eshell'de kalmak istiyorum, bazı alt süreçlerde değil
  • yeniden taktıktan sonra uzak oturumun çıktısının yeniden oynatılmasını ve uzak komut geçmişinin kullanılabilir olmasını istiyorum
  • Çalışan uzak bir işlemle etkileşime girmek istiyorum (örneğin, girdimi yum installbekleyen bir çalışan )

Tüm bu dtach ile çalışmak için elisp kodu biraz yazmak gerekecek gibi görünüyor.


kabuk modu kabuk işlemi ile etkileşime giriyor, kabuk eshellIS - bu yüzden kavramsal olarak bana dtach oturumunda bir eshell arabelleği olan çalışan bir emacs erişmediğiniz sürece istediğinizi yapamazsınız. Yoksa burada yanıldım mı?
Tom Regner

Gelen eshellne yerel ve ne uzak ve ne bir dış komutu ve bir elisp fonksiyondur bulanıklaştırıldığı arasındaki çizgileri. Uzaktan çalışan süreçlerin yerelmiş gibi şeffaf bir şekilde etkileşime girebileceği şekilde daha da bulanık hale getirmek istiyorum. Sanırım, bu, koşu seansına "devam etmek" ile neredeyse aynı olurdu.
rekado


@sds: screeniçinde koşmak shell-modeiyi çalışmaz, çünkü screenaptal bir terminalden daha fazlasına ihtiyaç duyar.
rekado

Yanıtlar:


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.