linux - 为什么我在尝试列出 session 时收到来自 tmux 的 "failed to connect to server"消息?

标签 linux ssh terminal tmux

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

failed to connect to server: Connection refused

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

最佳答案

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 session 的 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 重新创建套接字文件,所以我尝试了一下,我能够立即找到 session 并重新附加:

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

关于linux - 为什么我在尝试列出 session 时收到来自 tmux 的 "failed to connect to server"消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9668763/

相关文章:

linux - 用空格替换行,用包含空格的字符串替换反斜杠

linux - Bash 脚本适用于 ssh,但不适用于 php

linux - 如何在终端中更改 ls -a

bash - bash 脚本中的 ssh 退出循环

javascript - 终端:% Node example.js -bash:fg:没有这样的工作

C - 循环内的 fprintf 和 printf 不打印到屏幕

linux - 如何使配置 .emacs 在 linux 中成为全局的

c++ - Oprofile 与 perf

linux - 我如何知道 Virtualbox VM 何时准备好接受 SSH 连接?

ssh - 混帐克隆 : CONNECT_CR_SRVR_HELLO:wrong version number