必备生产力工具 Tmux 与 Zellij
前言
最近一直在使用 tmux 和 Zellij,这俩工具就像是"终端里的操作系统",让我们能同时管理多个任务、不中断地工作,实属必备生产力工具。
终端复用
tmux 是一款终端复用工具,简单来说,就是可以让我们在一个终端窗口里,开多个会话、窗口和面板,并且这些会话可以在后台长期运行,即使你断开了 SSH 连接,进程也不会中断。个人一直在用的终端工具是 Tabby,其也支持手动分割为多个窗口,但是有个坏处,就是当网络抽了的时候,你的连接就断了,下次登录是找不回上次的命令和状态的 (试想一下当你满心欢喜准备查看跑到 99% 的大查询结果时,连接突然断了的那种酸爽)。这个时候,tmux 的优势便体现出来了 —— 持久性,远程 SSH 断开后,程序依然在 tmux 会话中运行,再次登录时,只需 tmux attach 就能恢复现场,除此之外,还支持:
1.支持多用户共享一个 tmux session。团队可以一起看到同一终端输出,远程 pair programming 很方便2.支持丰富的配置3.不用开一堆 ssh 窗口,在一个终端里就能管理多个窗口和分屏,例如左边 tail 日志,右边执行命令,下面跑监控4....
小试牛刀
缘由是最近经常和 MPP 数据库打交道,大多数时候,仅分析 Master/Coordinate 等等协调节点的状态是不够的,你需要查看具体计算节点的状态,这个时候 tmux 的优势就体现出来了。举个栗子,假如当前你发现某个 SQL 异常缓慢,你要分析各个节点的负载、CPU 使用率、IO 和丢包情况等,传统方式你要登录 N 个会话,挨个敲命令去看,还要来回切换,费时费力,But!你要是会 tmux 那就 so easy 了 👇🏻,我在一个会话里眼观八方
前面也说过了,tmux 是持久化的,不用担心连接断了,下次登录,直接 attach 即可,并且可以多人同时 attach,可以很方便 pair。另外有些场景下,还需要下发命令到多个窗口同时执行,我们可以在 ~/.tmux.conf 里添加一个快捷键,例如:
# 绑定 Ctrl+b + s 来切换广播模式bind s setw synchronize-panes
然后只要 Ctrl+b s 就能开关广播。
更多快捷键用法就参照 Tmux 使用教程[1]吧,无外乎就那几个命令,掌握好就可以快乐地敲命令了
•Ctrl+b %:划分左右两个窗格。•Ctrl+b ":划分上下两个窗格。•Ctrl+b o:光标切换到下一个窗格。•Ctrl+b z:当前窗格全屏显示,再使用一次会变回原来大小。•Ctrl+b s:广播命令
其他工具
另外类似的工具有 Byobu 和 Zellij,Zellij 大概试用了下,很酷炫,具备直观的界面和简化的操作体验,比较适合开发者,而 Byobu 则适合不熟悉命令行的用户,尤其是那些需要易用界面的生产环境。
小结
简而言之,用好 tmux,能够大幅提升我们的工作效率 👍🏻
参考
【终端神器进阶】Zellij:比 Tmux 更强的多任务利器![2]
https://www.ruanyifeng.com/blog/2019/10/tmux.html[3]
References
[1] Tmux 使用教程: https://www.ruanyifeng.com/blog/2019/10/tmux.html[2] 【终端神器进阶】Zellij:比 Tmux 更强的多任务利器!: https://www.youtube.com/watch?v=fgRdPD-6NAs[3]: https://www.ruanyifeng.com/blog/2019/10/tmux.html