能,但默认只恢复布局和目录,不恢复运行中的进程;需显式配置@resurrect-processes、确保bash≥4.4或zsh≥5.3,并正确设置continuum-restore与tpm初始化顺序。

tmux-resurrect 能不能自动恢复重启前的全部状态
能,但默认只恢复布局和目录,不恢复运行中的进程(比如 python server.py、tail -f logs/app.log)。要真正“一键回到断电前”,必须显式配置进程恢复策略,并确保 shell 版本达标。
关键限制有三个:bash 或 <code>zsh 会导致 pane 内容无法还原;<code>default-command 中含 && 或 || 会破坏命令解析;未在 @resurrect-processes 列表里的程序一律跳过启动。
- 检查当前 shell 版本:
bash --version或zsh --version - 确认 tmux 使用的是该 shell:
echo $SHELL和tmux show-option -g default-shell应一致 - 避免在
~/.tmux.conf中设置set -g default-command "bash -l -c '...'"这类带逻辑操作符的值
@resurrect-processes 配置哪些值才算真正实用
别用 :all: —— 它会尝试恢复所有历史命令,极易因权限、路径或端口占用失败。生产环境推荐按角色分层配置:
- 基础运维命令:
set -g @resurrect-processes 'ssh rsync systemctl journalctl' - 服务类进程(带参数):
set -g @resurrect-processes 'nginx "supervisord -c /etc/supervisord.conf" "python3 /opt/app/main.py"' - 自定义启动逻辑(用
->重写):set -g @resurrect-processes '"python3 /tmp/script.py->cd /tmp && python3 script.py"'
注意:每个字符串必须用英文双引号包裹,空格是分隔符,不是命令内参数分隔符。想恢复 vim README.md,就写 "vim README.md",不要拆。
tmux-continuum 自动保存为什么有时不生效
常见原因不是插件没装,而是两个配置项冲突或缺失:
-
set -g @continuum-restore 'on'必须存在,否则开机启动 tmux 时不会触发恢复 -
run -b '~/.tmux/plugins/tpm/tpm'必须放在.tmux.conf最末行,否则插件初始化中断,tmux-continuum的定时器根本不会注册 - 如果用 systemd 管理 tmux(如
tmux new-session -d -s main),需确保该 session 是通过tmux attach启动的,而非直接tmux new—— 后者不会被 continuum 捕获为“主会话”
验证是否生效:重启前执行 ls -t ~/.tmux/resurrect/ | head -n3,应看到带时间戳的 last 文件;重启后进 tmux,立刻执行 tmux list-sessions,若会话名与之前一致,说明恢复已触发。
多显示器分组会话恢复后窗口位置错乱怎么办
tmux-resurrect 本身不管理 X11 窗口位置,它只管 tmux 内部结构。如果你依赖不同显示器对应不同会话(比如 left / right),必须配合外部工具做二次定位:
- 保存时记录几何信息:
set -g @resurrect-hook-post-save-all 'xdotool getwindowgeometry --shell $(tmux display-message -p "#I") | grep -E "^(X|Y|WIDTH|HEIGHT)=" >> $HOME/.tmux/resurrect/geometry' - 恢复后重置位置(需在
@resurrect-hook-pre-restore-all中调用脚本):wmctrl -r :ACTIVE: -e 0,$X,$Y,$WIDTH,$HEIGHT - 更稳妥的做法是放弃像素级还原,改用 tmux 原生分组:
tmux join-pane -s left -t right,再由 resurrect 保存该分组关系 —— 这部分它原生支持且 100% 可靠
真正容易被忽略的是:tmux-continuum 的自动恢复只在你首次运行 tmux(无会话时)触发。如果你习惯先 tmux new 再 tmux attach,恢复逻辑就被绕过了。











