如何重新找回失去连接的tmux会话

错误描述:

不知道因为什么原因,tmux挂掉了。 显示“failed to connect to server”消息
尝试使用tmux ls 获取当前正在运行的会话列表时。报错

failed to connect to server: Connection refused

使用tmux时,无法重新连接。

$ tmux attach
no sessions

但是查看tmux 服务的时候,还是存在的。

$ 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

解决方案

这说明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,但没有反应。
搜了一下, StackOverflow上的解决方案是 “Try sending SIGUSR1 signal to the tmux server process.”
尝试将SIGUSR1信号发送到tmux服务器进程。
因为在tmux的文档中也提到,发送SIGUSR1将使tmux重新创建套接字文件。尝试了这种方法后,就能找到会话并重新连接了。

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

参考链接

  1. https://stackoverflow.com/questions/9668763/why-am-i-getting-a-failed-to-connect-to-server-message-from-tmux-when-i-try-to
  2. https://man7.org/linux/man-pages/man1/tmux.1.html
  3. https://timvisee.com/blog/reconnect-to-broken-tmux-session/
posted @ 2022-03-09 10:58  白云君  阅读(1671)  评论(0编辑  收藏  举报