tmux 入门:SSH 断线也不丢会话,三个概念就够用
在服务器上跑过长任务的人,大概都吃过这个亏:SSH 连着跑一个备份、一次编译或者一场压测,网络一抖、窗口一关,任务跟着进程一起没了。重新连上去,只能从头再来。
解决办法不是换更稳的网络,而是让任务脱离 SSH 会话独立运行。tmux 就是干这个的:它在服务器上常驻一个会话管理器,你的命令跑在 tmux 的会话里,SSH 断了,会话还在;重新连上,一条命令就能回到原来的现场。
会话、窗口、窗格:先分清这三个概念
tmux 里有三个层级,刚开始用只要记住它们的关系:
- 会话(session):一台机器上可以有多个会话,每个会话是一套独立的工作现场。比如一个会话跑备份,另一个会话看日志,互不干扰。
- 窗口(window):一个会话里可以开多个窗口,相当于浏览器里的多个标签页。窗口之间用名字或编号切换。
- 窗格(pane):一个窗口可以再切分成多个窗格,相当于把屏幕分成几块,同时看日志、跑命令、改配置。
命令都以前缀键开头,默认是 Ctrl+b,先按前缀,再按功能键。比如新建窗口是 Ctrl+b c,切换窗口是 Ctrl+b n(下一个)或 Ctrl+b p(上一个)。
最常用的五条命令
第一次用 tmux,不用背全套快捷键,先掌握这五条就能应付九成场景:
tmux new -s backup # 新建一个名叫 backup 的会话
tmux ls # 列出当前所有会话
tmux attach -t backup # 回到 backup 会话
会话里面还有两个救命操作:Ctrl+b d 是分离(detach)——退出当前会话的显示,但会话里的程序继续跑;Ctrl+b x 是关闭当前窗格,关闭前会问你确认。
典型流程是这样的:tmux new -s deploy 进会话,启动一个要跑半小时的部署脚本,按 Ctrl+b d 分离,安心关掉 SSH;半小时后重新登录,tmux attach -t deploy,部署进度原样呈现在眼前。
窗格切分:一个窗口同时干几件事
长任务跑着的时候,往往还想顺手看一眼日志或者改个配置,不用另开 SSH,连上同一个会话切个窗格就行:
Ctrl+b %:左右切分当前窗口Ctrl+b ":上下切分当前窗口Ctrl+b 方向键:在窗格之间移动光标Ctrl+b z:把当前窗格临时放大到全屏,再按一次恢复
举个例子:左边窗格跑着 tail -f 看日志,右边窗格敲命令改配置,互相不抢屏幕。任务跑完,exit 退出窗格的 shell,窗格自动关闭。
两行配置,让 tmux 顺手得多
tmux 的默认配置比较朴素,在家目录建一个 ~/.tmux.conf,加两行就能舒服不少:
set -g mouse on
set -g history-limit 10000
第一行打开鼠标支持:滚轮可以直接翻历史输出,拖动可以调整窗格大小;第二行把每个窗格保留的历史行数从默认的 2000 提到 10000,查旧日志不用怕翻不到。
改完配置不用重启会话,在 tmux 里按 Ctrl+b :,输入 source-file ~/.tmux.conf 回车就生效了。
还有一个常见改动是把前缀键从 Ctrl+b 换成 Ctrl+a,因为 b 键离左手小指比较远。不过这属于个人习惯,刚开始用完全没必要改,先把默认键位用顺手再说。
小结
tmux 解决的其实是「连接不可靠,但任务必须可靠」这个矛盾:会话跑在服务器上,与 SSH 连接解耦,断线重连都只是重新接上显示器。记住 new、ls、attach、Ctrl+b d 这四个操作,再加切分窗格的两个快捷键,就够应付日常的服务器运维。等用顺手了,再去研究会话共享、窗口布局这些进阶玩法也不迟。
- 点赞
- 收藏
- 关注作者
评论(0)