tmux 入门:让终端会话断网也不丢工作现场
远程连到服务器上跑个长任务,最怕的不是任务慢,是网络一抖、SSH 一断,终端关了任务也跟着没了。之前我都是 nohup 加日志文件凑合,后来改用 tmux 管理会话:会话跑在服务器端,本地断线、关电脑都不影响,重连后一条命令就回到原来的现场,分屏和多窗口也顺手解决了。
一、会话的基本操作
安装很简单,Ubuntu/Debian 上 sudo apt install tmux 就行。最常用的就四条命令:
tmux new -s work # 新建一个叫 work 的会话
tmux ls # 查看现有会话
tmux attach -t work # 重新进入 work 会话
# 在会话内按 Ctrl+b 再按 d:暂时退出,会话继续在后台跑
关键就在 attach 这一步:SSH 断了之后重新连上服务器,tmux attach -t work 就能回到断开前的样子,正在跑的编译、下载、日志滚动都原封不动。
二、窗口和分屏
一个会话里可以开多个窗口,像浏览器标签页一样切换;一个窗口里还能再分屏,左边看日志、右边敲命令,运维时特别顺手:
Ctrl+b c 新建窗口
Ctrl+b n / p 下一个 / 上一个窗口
Ctrl+b % 左右分屏
Ctrl+b " 上下分屏
Ctrl+b 方向键 在分屏之间移动
Ctrl+b z 当前分屏全屏/还原(看长日志很好用)
tmux 的快捷键都要先按前缀键 Ctrl+b,再按功能键,刚开始容易忘,用一两天就顺了。
三、翻看长输出:复制模式
终端滚太快,日志刷过去就找不到?在 tmux 里按 Ctrl+b [ 进入复制模式,可以用方向键和 PageUp 往上翻,还能按 / 搜索关键字,按 q 退出。查报错时比把日志重定向到文件再 grep 更快,尤其适合临时排查。
四、一个实际用法:跑升级任务
我现在在服务器上做系统升级、跑数据同步这类长任务,都是先开 tmux 会话再动手:
tmux new -s upgrade
sudo apt update && sudo apt upgrade
# 网络不稳就 Ctrl+b d 退出,过会儿 attach 回来看结果
任务在服务器端独立运行,不依赖我本地的网络和终端,长任务再也不用守着屏幕等。
五、小建议
会话名字取有意义的,比如 upgrade、backup、dev,多个会话时不迷路;重要的长期会话可以配合 tmux-resurrect 插件保存布局,不过日常使用原生的就足够了。先把 new、attach、detach 这三个动作练熟,tmux 的价值就已经拿到大半。
- 点赞
- 收藏
- 关注作者
评论(0)