2011-02-24 03:10:27 +0000 2011-02-24 03:10:27 +0000
128
128

如何分离一个本身已经在tmux中的tmux会话?

我在我的本地机器上打开了一个tmux会话,并通过ssh连接到远程机器。在这之后,我在远程机器上输入了 “tmux attach "命令,然后我在本地tmux会话上得到了一个远程tmux会话。

现在我想分离远程tmux会话,我试过

C-b d

但它分离的是我的本地tmux会话而不是远程会话。

_我怎样才能分离远程tmux会话?

答案 (4)

172
172
172
2011-02-24 04:21:36 +0000
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;它脱离了活动客户端。

这与你需要向运行在tmux会话内的任何程序发送C-b是一样的。如果你想把 C-b发送到你的普通shell(例如,因为你的shell使用Emacs风格的编辑,其中C-bbackward-char(而且你不喜欢使用方向键)),你将需要使用C-b** C-b 来获得单个C-b**到shell。

51
51
51
2011-09-24 12:00:19 +0000

另一种方法是在远程tmux会话中键入tmux detach,而不用担心钥匙绑定到正确的tmux实例。

8
8
8
2013-01-21 16:43:49 +0000

我试了第一个答案没有成功。

我做了以下操作,得到了我想要的结果。

tmux attach

我进入tmux,看到另一个会话还在连接着

于是我分离了我当前的会话,回到shell:Ctrl + b; d

然后我发出了以下命令:tmux attach -d

这说明要连接到默认会话,并分离当前连接的所有其他会话。请参阅Clients and Sessions

attach-session [-dr] -t target-session 如果从tmux外部运行,在当前终端中创建一个新的客户端,并将其附加到target-session。如果从内部使用,则切换当前客户端。如果指定了 -d,则连接到该会话的任何其他客户端都会被分离。

0
0
0
2018-03-12 06:28:47 +0000

如果你想尝试其他选项,请按照以下步骤进行

  1. Ctrl+b d 分离当前的 tmux 会话,这样你就可以进入正常的终端命令行提示。
  2. 查找当前连接的会话
  3. 执行此命令以脱离已经连接的会话 tmux ls