https://smsmpulupulu.hashnode.dev/the-best-way-to-saverestore-your-tmux-session
tmux 很好用。但当想用他来保存状态的话有几个问题
tmux 自己只专注于终端分屏的部分,没有自带的保存 layout ,恢复 layout 的功能
tmux 直到 2.3 的时候( 2016 年。。好像也不是很晚)的时候才支持 panel 级别的 title
默认的 panel title 是自动变化的,当你 ssh 的时候,会自动变成远端的主机名。这个特性看起来很好。但是当你同时连接多个相同的节点时,很难单从主机名上回想起这个 pane 到底是想干什么 与之相对的 zellij 在 pane 重命名的部分做的就很不错。但这次我们还是主要讲 tmux 。。
第一个点。save/load layout 实际上有很多 tmux 的衍生项目在做。
tmuxinator tmuxp 这类的要义在于你先定义一个配置文件( yaml etc ),由这些工具帮你构造出一个 tmux 的 session 。(不过 tmuxp 提供了 freeze 命令 能够将当前的 layout 保存起来)
tmux-resurrect 更是直接把自己做成了插件,让你能够通过快捷键,保存所有的 session 。
tmux-resurrect 只能同时保存和还原所有的 session 。不能单独的保存/还原某个 session
在我看来,以上这些工具的问题在于,他们想自己做的太全了。完全没有必要。在使用者自己提供了一些 hint 之后,体验就能做的更好好。
![]() |
1
wisetc 83 天前 via iPhone
detach mode 不是就过大部分的场景,恢复 session 这种运行中的程序进程好像还是会遇到问题,对关机重启很有作用
|
2
oaa OP 恩。所以我的想法就是在创建新 pane 的时候就要指定好如何重建这个 pane 。
|
![]() |
3
kuanat 83 天前
这个是不是考虑方向偏了?我觉得有必要明确区分 layout/session ,恢复 layout 是个容易的事情,但恢复 session 不是个很好的方向。
我个人的意见,session 很廉价,完全可以预先开很多 session (习惯通过 systemd service 管理),无论是 ssh 还是本地连接的时候直接 attach 到对应的 session 里面。 对于非重启环境,直接 detach 就可以了。对于重启环境,没想到要恢复 session 的应用场景。 |
4
corvofeng 82 天前
|