SSH 断线不再丢任务:tmux 入门实战
经常在云服务器上跑长任务的人,都有过这样的经历:SSH 连着服务器编译代码、训练模型、下载大文件,笔记本一合盖、Wi-Fi 一抖,连接断了,任务也跟着没了。重新连上去只能干瞪眼——半天的进度白跑了。
其实 Linux 下有个用了就回不去的工具:tmux。它在服务器上创建一个“虚拟终端会话”,你的命令跑在会话里,而不是跑在 SSH 连接里。SSH 断了,会话还在;重新连上去,attach 回去,一切原样。
安装和第一个会话
大多数发行版一行命令搞定:
sudo apt install tmux # Debian/Ubuntu
sudo yum install tmux # CentOS/RHEL
新建会话并给它起个名字,比如 build:
tmux new -s build
现在你就在 tmux 会话里了。跑你的长任务,比如 make -j4 或 python train.py,然后按下 Ctrl-b 再按 d(detach),会话就“挂”在后台了。你可以放心断开 SSH。
第二天重新连上服务器,执行:
tmux attach -t build
终端原样回来,任务输出一字不差。任务跑完了,用 exit 退出,会话自动关闭。
几个救命快捷键
tmux 的操作都以 Ctrl-b 开头(叫 prefix),记住这几个就够日常用:
Ctrl-b d:分离会话(任务继续跑)Ctrl-b c:新建一个窗口Ctrl-b n / p:切换到下/上一个窗口Ctrl-b %:左右分屏,Ctrl-b ":上下分屏Ctrl-b+ 方向键:在分屏之间移动光标Ctrl-b [:进入滚动查看模式(用方向键/PgUp 翻历史输出,按 q 退出)
分屏特别适合“一边看日志、一边改配置”的场景,一个终端顶过去两三个。
让它更好用:两个配置
默认的 tmux 有点“复古”,加两行配置体验翻倍。编辑 ~/.tmux.conf:
# 鼠标滚轮翻历史、分屏间点选
set -g mouse on
# 状态栏显示更清楚,刷新更快
set -g status-interval 5
改完执行 tmux source ~/.tmux.conf 生效。开鼠标支持后,滚轮直接翻看历史输出,分屏之间点一下就能切换,对新手友好很多。
实用场景举例
**场景一:半夜跑的批量任务。**写个脚本循环处理数据,tmux new -s batch 进去启动,detach 后睡觉。第二天 attach 看结果,中间笔记本重启多少次都不影响。
**场景二:多人协作看同一终端。**两个人先后 tmux attach -t demo 连到同一个会话,能看到完全相同的终端画面,结对排查问题很方便(注意这相当于共享 shell 权限,只和信任的人用)。
**场景三:服务器重启也不怕丢“现场”。**配合 tmux-resurrect 插件,会话布局甚至能持久化保存,重启后一键恢复。不过对大多数人来说,记住 new/attach/detach 三招,已经解决了 90% 的痛点。
小结
tmux 的核心思想就一句话:把“任务”和“连接”解耦。任务属于服务器上的会话,连接只是你看它的窗口。装一次、学三个命令,从此告别“SSH 一断、心态爆炸”。如果你还在用 nohup xxx & 这种土办法跑长任务,不妨花十分钟试试 tmux。
- 点赞
- 收藏
- 关注作者
评论(0)