我不知道这是否应该默认工作,但似乎当我尝试从一台机器或另一台机器恢复 tmux 会话时。我使用两种不同类型的 tmux 会话连接,一种来自 Cygwin 终端,另一种来自同一台计算机上的 Ubuntu VM。启动的会话是两个不同的会话。如果我删除会话中的所有窗口并断开与它的连接,则会创建一个全新的窗口,而不是以另一种连接方式连接到现有窗口。在这两种情况下,我都通过 ssh 连接到同一台服务器,然后运行tmux
以下命令。我通常使用此命令恢复我的会话:
tmux a -d || tmux
编辑:我要么通过网络本身断开连接,Ctrl+a Ctrl+d
要么只是通过网络本身断开连接,但如果我使用我最初使用的同一系统执行此操作,我可以随后恢复连接。如果我从 Cygwin 列出我的会话,我会得到:
tmux ls
0: 1 windows (created Wed Apr 17 15:49:23 2013) [149x45]
如果我将其与 VM 一起列出,我会得到不同的结果:
tmux ls
0: 19 windows (created Thu Apr 11 09:24:00 2013) [191x35]
我遗漏了什么参数吗?
答案1
这看起来像是套接字的问题——我怀疑在某个时候你创建了一个全新的 tmux,它在与原始套接字不同的套接字上监听(也许是在你登录时通过你的 shell 受到干扰?)并且现在有两个 tmux 服务器正在运行。
检查 /tmp(如果这是 tmux 服务器创建其套接字的地方)并且您应该能够确定这一点,以及“ps aux”的输出。
答案2
您不会每次都终止太多会话吧?按 CTRL-A CTRL-D 可脱离会话,而不是终止它。
连接后,使用 列出您的 tmux 会话tmux ls
。记下此命令中的第一个数字,这就是您想要重新连接的数字。然后,要从任一机器连接到该会话,我们假设tmux attach -t 0
您的 tmux 会话为 0。