題 如何分離tmux中已經存在的tmux會話?


我在我的本地機器上打開了一個tmux會話,然後ssh到遠程機器上。在此之後,我在遠程計算機上鍵入命令“tmux attach”,然後我在本地tmux會話上獲得了一個遠程tmux會話。

現在我想分離遠程tmux sesstion,我試過了

C-b d

但它分離了我的本地tmux會話而不是遠程會話。

如何分離遠程tmux sesstion?


82
2018-02-24 03:10


起源




答案:


C-b C-b d

(假設默認綁定)

首先 C-B 由您當地解釋 TMUX (因為它是第一個看到你所有的擊鍵)。第二 C-B 是一個導致本地tmux發送的命令 C-B 到它的活動窗格;這產生了 C-B 到達遙控器 TMUX。該 d 穿過當地 TMUX 不變;當它到達遙控器 TMUX 它觸發了 detach 命令。

  1. 你輸入 C-B
    你當地的 TMUX 將其解釋為前綴鍵;沒有任何內容髮送到本地下運行的進程 TMUX
  2. 你輸入 C-B
    你當地的 TMUX 它受到了約束 send-prefix 命令。
    1. 你當地的 TMUX 發送一個 C-B 到活動窗格中運行的進程(SSH)。
    2. SSH 轉發它(通過 sshd的等等)在遠程端運行的進程(遠程 TMUX)。
      你的遙控器 TMUX 將其解釋為前綴鍵;沒有任何內容髮送到遠程下運行的進程 TMUX
  3. 你輸入 d
    你當地的 TMUX 通過正常(從第二個 C-B 完成了本地的完整命令鍵序列 TMUX)。
    你的遙控器 TMUX 有它必然 detach-client;它會分離活動客戶端。

這與您需要發送時相同 C-B 到任何在裡面運行的程序 TMUX 會話。如果你想發送 C-B 到你的普通shell(例如因為你的shell正在使用Emacs式編輯) C-B 是 backward-char (你不喜歡使用箭頭鍵))你需要使用 C-B  C-B 得到一個單身 C-B 到了shell。


124
2018-02-24 04:21



或者,我經常看到使用 C-a C-a 跳轉到最後一個活動窗口。在這種情況下嘗試 C-a a d 脫離。謝謝! - mkelley33
注意:我上面提到的組合只有在 a 鍵被綁定而不是 b 在用戶的tmux.conf中。 - mkelley33
我的外部tmux使用 C-a 和內在的 C-b並且為了能夠從內部分離,唯一對我有用的是 C-a C-b-b d,但我不知道為什麼我需要第二個 b - gcucurull


另一種方法是在不擔心將鍵盤綁定到正確的tmux實例的情況下進行操作 tmux detach 在遠程tmux會話中。


38
2017-09-24 12:00





我試了第一個答案沒有成功。

通過執行以下操作,我能夠獲得我想要的結果:

tmux attach

我進入了tmux,看到其他會話仍然附著

所以我分離了我當前的會話以回到shell: Ctrl + b; d

然後我發出以下內容: tmux attach -d 

這表示附加到默認會話,並分離當前附加的所有其他會話。請參閱下面的手冊頁 客戶和會話

連接會話 [-dr] [-t target-session]                   (別名:附加)   如果從外部tmux運行,請在當前終端中創建一個新客戶端並將其附加到   針對會話。如果從內部使用,請切換當前客戶端。 如果指定了-d,則為任何其他   附加到會話的客戶端是分離的。  -r表示客戶端是只讀的(只有綁定的密鑰)   對detach-client命令有任何影響)


4
2018-01-21 16:43





如果您想嘗試其他選項,請按照以下步驟操作

  1. 分離當前的tmux會話 Ctrl+b d 。這樣你現在就可以進入正常的終端命令行提示符。
  2. 做一個 tmux ls 。查找當前附加的會話
  3. 執行此命令以分離已連接的會話 tmux detach-client -s <attached_session_name>

0
2018-03-12 06:28