我已经使用 tmux 大约 4-5 个月了,最近开始注意到一些奇怪的东西。
- tmux ls 不显示活动“会话”的完整列表
- 即使会话没有出现在 tmux ls 上,我仍然可以连接到该会话
- 我的一些会话开始在其名称中获取索引..例如 name_of_session_3
我在通过 ssh 连接的远程计算机上使用 tmux。我通常在本地计算机上的单独选项卡中打开多个终端,但我不希望这会影响 tmux 的行为方式。
我究竟做错了什么?
这是 tmux ls 的输出
➜ ~ tmux ls bad*******-1: 1 windows (created Mon Mar 12 15:27:29 2018) [273x129] (group badges_hist) bad*******_fix-9: 1 windows (created Thu Mar 22 11:42:28 2018) [208x54] (group bad*******) (attached) no*******-7: 1 windows (created Wed Mar 21 15:17:33 2018) [273x129] (group *******) not*******s-8: 1 windows (created Wed Mar 21 15:47:01 2018) [208x54] (group noti*******) (attached) pre*******-2: 1 windows (created Tue Mar 13 14:24:33 2018) [273x129] (group pre*******)
我希望在该列表中看到另外 3-4 个会议。
答案1
tmux list-sessions
(或tmux ls
)不会列出在另一个套接字下启动的会话。
$ tmux
# ... same as
# tmux -L default
$ tmux -L lofa
$ tmux -L lofa new
# (Detaching from each session after creation
# via "<prefix> d" or "CTRl-b d")
$ tmux ls
# ... same as
# tmux -L default list-sessions
0: 1 windows (created Tue Apr 25 15:12:07 2023)
$ tmux -L lofa new
0: 1 windows (created Tue Apr 25 15:17:00 2023)
1: 1 windows (created Tue Apr 25 15:21:59 2023)
来自tmux
手册页:
-L socket-name tmux stores the server socket in a directory under TMUX_TMPDIR or /tmp if it is unset. The default socket is named default. This option allows a different socket name to be specified, allowing several independent tmux servers to be run. Unlike -S a full path is not necessary: the sockets are all created in a directory tmux-UID under the directory given by TMUX_TMPDIR or in /tmp. The tmux-UID directory is created by tmux and must not be world readable, writable or executable.
答案2
那么看起来 ssh 转发是问题所在?
Tmux 在启动时捕获环境。如果您在桌面上
SSH_AUTH_SOCK
指向A,然后断开 (Ca,d)。现在您通过 SSH 连接到桌面,SSH_AUTH_SOCK
此环境中的 将会是某个值 B,您重新连接后,您仍然SSH_AUTH_SOCK
指向 A。