问题现象
当tmux运行一段时间,或detatch以后,再执行tmux a
命令或在tmux ls
命令时,会报错如下:
error connecting to /tmp/tmux-1008/default (No such file or directory)
其实,这并不代表你的tmux就不存在了,只是tmux server找不到了,
原因分析
因为tmux server把相关tmux session信息(就是tmux client和tmux server通讯的socket)存储在了/tmp目录下的tmux-xxx
目录,如果这个tmux-xxx目录被删除,那么就会报上面的错误,大家可以做下实验。
解决办法
- 启动一个新的tmux session,但可能会伴随着一系列的窗口需要重新被打开,没有保存的内容可能会丢失
- 重新生成tmux server需要的文件:
- 先检查错误信息中的提示的目录
/tmp/tmux-1008/
是否存在,如果这个目录不存在,则创建 - 执行命令
pkill -USR1 tmux
- 再尝试执行命令
tmux a
或tmux ls
看看有没有效果(我的电脑是可以的)如下图所示:
在没有detach tmux session的情况下,重建了需要的socket在/tmp/tmux-1008
目录,然后执行tmus ls
,就可以了。
- 先检查错误信息中的提示的目录
彻底的解决办法
- 以上情况往往是误删除了tmux-xxx导致的,而tmux默认放在/tmp目录
- 只需要更改tmux-xxx的默认目录即可,如下:
export TMUX_TMPDIR=~/.tmux/tmp
- 并创建对应的目录,然后重新启动tmux即可,再也不用担心别人误删你的tmux文件了