如何重新找回失去连接的tmux会话
错误描述:
不知道因为什么原因,tmux挂掉了。 显示“failed to connect to server”消息
尝试使用tmux ls 获取当前正在运行的会话列表时。报错
copyfailed to connect to server: Connection refused
使用tmux时,无法重新连接。
copy$ tmux attach
no sessions
但是查看tmux 服务的时候,还是存在的。
copy$ 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)显示套接字文件已打开:
copyCOMMAND 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重新创建套接字文件。尝试了这种方法后,就能找到会话并重新连接了。
copy$ kill -s USR1 7139
$ tmux ls
0: 12 windows (created Mon Apr 18 21:17:55 2016) [198x62]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步