现在我想分离远程tmux会话,我已经尝试过
C-b d
,但是它分离了我的本地tmux会话,而不是远程的。
如何分离远程tmux会话?
#1 楼
C-b C-b d
(假设使用默认绑定)
第一个C-b由您的本地tmux解释(因为它是第一个看到所有按键的)。第二个C-b是使您的本地tmux将C-b发送到其活动窗格的命令;此生成的C-b到达远程tmux。 d不变地通过本地tmux;当到达远程tmux时,它会触发
detach
命令。您键入C-b。
您的本地tmux将其解释为前缀键;没有任何内容发送到在本地tmux下运行的进程。
您键入Cb。
您的本地tmux将其绑定到
send-prefix
命令。您的本地tmux将Cb发送到在活动窗格(ssh)中运行的进程。
ssh将其(通过sshd等)转发到在远端(远程tmux)上运行的进程。
您的远程tmux将其解释为前缀键;没有任何内容发送到在远程tmux下运行的进程。
您键入d。
您的本地tmux正常传递它(因为第二个Cb完成了完整的命令键序列
您的远程tmux已将其绑定到
detach-client
;它会分离活动客户端。这与您需要将C-b发送到tmux会话中运行的任何程序时相同。如果您想将Cb发送到普通外壳(例如,因为您的外壳正在使用Emacs风格的编辑,其中Cb是
backward-char
(并且您不喜欢使用箭头键)),则需要使用Cb Cb将单个Cb发送到外壳。#2 楼
另一种不用担心绑定到正确的tmux实例的键绑定方法是在远程tmux会话中键入tmux detach
。#3 楼
我尝试了第一个答案但没有成功。通过执行以下操作,我可以获得所需的结果:
tmux attach
我输入了tmux并看到另一个会话仍被连接
,所以我分离了当前会话以返回到shell:
Ctrl + b; d
然后我发出了以下内容:
tmux attach -d
这表示要附加到默认会话,并分离当前附加的所有其他会话。请参见“客户端和会话”下的手册页
attach-session [-dr] [-t target-session]
(别名:attach)
如果从以下位置运行在tmux之外,在当前终端中创建一个新客户端,并将其附加到
target-session。如果从内部使用,请切换当前客户端。如果指定了-d,则将断开连接到该会话的所有其他
客户端。 -r表示客户端是只读的(仅绑定到detach-client命令的键有效)
#4 楼
如果要尝试其他选项,请按照以下步骤操作,并使用
Ctrl+b d
分离当前的tmux会话。这样您现在就可以进入普通的终端命令行提示符。执行
tmux ls
。查找当前连接的会话执行此命令以分离已连接的会话
tmux detach-client -s <attached_session_name>
#5 楼
如果您已修改tmux配置以在两个tmux会话中使用Ctrl+b
以外的功能,则您仍然需要第二次按Ctrl+b
。 例如,在两个tmux会话中我的绑定都是
Ctrl+/
,所以我按:C-/ C-b d
评论
另外,我经常看到使用C-a C-a跳转到最后一个活动窗口。在这种情况下,请尝试使用C-a和d分离。谢谢!
–mkelley33
13-10-25在0:31
注意:我上面提到的组合只有在用户的tmux.conf中绑定了a键而不是b时才可用。
–mkelley33
13-10-25在0:42
我的外部tmux使用C-a和内部的c-b,并且能够与内部的c-b分离,唯一适合我的东西是C-a C-b-b d,但是我不明白为什么我需要第二个b
– Guilem Cucurull
18年8月21日在15:10
只是提醒一下,如果人们没有默认的键盘绑定,则允许他们启用此选项:您可以运行:命令以交互方式运行tmux命令,然后通过bind-key -n j send-prefix命令设置绑定。在此示例中,我想绑定j以发送前缀。否则,请使用戴夫的答案:使用tmux detach命令。
–nealmcb
19年7月10日在20:15
在Mac上,先按Command + b再按d,以分离tmux会话。
–瑞安·盖茨(Ryan Gates)
20 Dec 17 '22:01