tmux:让远程任务不断线的三个姿势
tmux:让远程任务不断线的三个姿势
远程连上一台服务器,起一个训练任务或编译任务,笔记本一合盖、Wi-Fi 一抖,SSH 断了,任务也跟着没了——这个亏几乎每个做过远程开发的人都吃过。tmux 就是专门解决这个问题的终端复用器:它在服务器上维持一个会话,断线重连后会话还在,任务照跑。
安装和入门
Debian/Ubuntu 一行装好:sudo apt install tmux。第一次用记住四个键位就够了,默认前缀键是 Ctrl-b(先按 Ctrl+b,松开后再按后面的键):
Ctrl-b d:把当前会话"挂起"(detach),退回普通终端,会话还在后台跑。Ctrl-b c:在当前会话里新建一个窗口。Ctrl-b n/Ctrl-b p:在窗口之间前后切换。tmux attach或简写tmux a:重新连上之前挂起的会话。
实际流程是:SSH 上服务器 → 输入 tmux(或 tmux new -s train 给会话起个名字)→ 启动你的长任务 → Ctrl-b d 挂起 → 断网、关机都无所谓 → 下次 SSH 上来 tmux a,任务还在原地输出日志。
三个提效姿势
姿势一:分屏,一边跑一边看日志。 Ctrl-b % 左右分屏,Ctrl-b " 上下分屏,Ctrl-b 方向键 在窗格间跳转。比如左屏跑训练,右屏 tail -f 看日志,再也不用开两个 SSH 窗口。
姿势二:复制模式,回看滚屏。 tmux 接管了终端滚屏,鼠标滚轮默认滚不动。按 Ctrl-b [ 进入复制模式,就可以用方向键/PageUp 翻看历史输出,按 q 退出。需要复制时,在复制模式里按空格开始选择,回车复制。
姿势三:会话命名 + 自动恢复脚本。 长期项目建议 tmux new -s <项目名> 命名会话,tmux ls 查看所有会话。把"进入会话"写进服务器的常用脚本里:tmux attach -t main || tmux new -s main,一句话:有就连上,没有就新建。
两个坑
一是嵌套 tmux:本地已经在 tmux 里,又 SSH 到服务器再开 tmux,前缀键会被本地吃掉。解决办法是给服务器上的 tmux 换前缀键,比如在 ~/.tmux.conf 里写 set -g prefix C-a,两边用不同的键。
二是 tmux 不会自动重启机器:如果服务器重启了,会话就没了。tmux 保的是"连接断线",不是"机器重启",重要任务还是要配合 systemd 或 nohup 做兜底。
从今天起,凡是要跑超过 5 分钟的远程命令,先 tmux 再开工——这是一个成本为零、收益巨大的习惯。
- 点赞
- 收藏
- 关注作者
评论(0)