这是发生在我身上的事情:我使用 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/