通过 pane option 来 save/load 你的 tmux session

155 天前
 oaa

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 之后,体验就能做的更好好。

1570 次点击
所在节点    分享创造
5 条回复
wisetc
154 天前
detach mode 不是就过大部分的场景,恢复 session 这种运行中的程序进程好像还是会遇到问题,对关机重启很有作用
oaa
154 天前
恩。所以我的想法就是在创建新 pane 的时候就要指定好如何重建这个 pane 。
kuanat
154 天前
这个是不是考虑方向偏了?我觉得有必要明确区分 layout/session ,恢复 layout 是个容易的事情,但恢复 session 不是个很好的方向。

我个人的意见,session 很廉价,完全可以预先开很多 session (习惯通过 systemd service 管理),无论是 ssh 还是本地连接的时候直接 attach 到对应的 session 里面。

对于非重启环境,直接 detach 就可以了。对于重启环境,没想到要恢复 session 的应用场景。
corvofeng
153 天前
https://github.com/corvofeng/kubemux

分享一下我写的这个工具, 也提供 tmuxinator 部分支持
oaa
152 天前
@kuanat 赞同,这里主要讲的确实是重建 session 。
使用场景的话 比如你搞了个测试环境,各种 ssh 看日志什么的。现在电脑重启 或者要在别的电脑(家里的电脑之类的)上继续工作了。这个时候就需要重建 session 了。
还有一种场景是 某些工作不是一口气能完成的,要想办法降低下次把这东西拾起来继续做的成本,这里指的就是建环境这部分的成本。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1049857

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX