为什么我在尝试列出会话时收到来自 tmux 的“连接服务器失败”消息?

新手上路,请多包涵

这是发生在我身上的事情:我使用 tmux -L name1tmux -L name2 开始 tmux 会话;然后我使用 ctrl + B + d 分离它们。然后我尝试获取计算机上当前正在运行的会话的列表。但是,当我运行 tmux ls 时,我收到一条错误消息:

 failed to connect to server: Connection refused

这是一个错误吗?我熟悉屏幕;我认为 screen -ls 是一个非常有用的功能,因为我可能会开始一个会话并让它在下一次附加到它之前运行数周。因此,列出当前正在运行的 tmux 会话的能力对我来说非常重要。当我知道 tmux 正在运行时,为什么 tmux ls 返回“连接被拒绝”错误?

原文由 thinke365 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
2 个回答

试试 tmux -L name1 list-session

原文由 Lars Kotthoff 发布,翻译遵循 CC BY-SA 3.0 许可协议

TL;DR: 尝试向 tmux 服务器进程发送 SIGUSR1 信号。

就我而言,在闲置大约 8 天后,我无法重新连接:

 $ tmux attach
no sessions

但是,tmux 进程的 grep 给了我这个输出:

 $ ps -aef | fgrep -i tmux
hari     7139     1  1  2016 ?        2-20:32:31 tmux
hari    25943 25113  0 22:00 pts/0    00:00:00 fgrep --color=auto -i tmux

正如@7heo.tk 所建议的,这表明 tmux 服务器仍在运行,但 tmux ls 给出了 failed to connect to server: Connection refused 错误。我验证了属于 tmux 会话的 tmp 目录存在,并且 lsof -p 7139 (tmux 服务器的 pid)显示套接字文件已打开:

 COMMAND  PID  USER   FD   TYPE             DEVICE SIZE/OFF       NODE NAME
tmux    7139 hari    5u  unix 0x0000000000000000      0t0 1712879255 /tmp/tmux-50440/default

我还尝试将 -S /tmp/tmux-50440/default 明确指定给 tmux,但它没有帮助。但是,我在 tmux 手册页中读到发送 SIGUSR1 会使 tmux 重新创建套接字文件,所以我尝试了,我能够立即找到会话并重新附加:

 $ kill -s USR1 7139
$ tmux ls
0: 12 windows (created Mon Apr 18 21:17:55 2016) [198x62]

原文由 haridsv 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题