tmux 入门:SSH 断线也不丢的终端会话

举报
yd_225636183 发表于 2026/11/02 10:18:49 2026/11/02
【摘要】 tmux 入门:SSH 断线也不丢的终端会话 先说一个常见翻车现场用 SSH 连上服务器跑一个耗时任务——导数据、训练模型、批量转码——跑到一半,本地网络抖了一下,终端窗口一关,任务跟着没了。重连上去一看,进程早已退出,只能从头再跑。更糟的是,有时任务其实还在跑,却因为终端断了,既看不到输出,也没法正常收尾,只能凭感觉去猜、去杀进程。问题的根不在任务本身,而在会话的归属:普通 SSH 会话...

tmux 入门:SSH 断线也不丢的终端会话

先说一个常见翻车现场

用 SSH 连上服务器跑一个耗时任务——导数据、训练模型、批量转码——跑到一半,本地网络抖了一下,终端窗口一关,任务跟着没了。重连上去一看,进程早已退出,只能从头再跑。更糟的是,有时任务其实还在跑,却因为终端断了,既看不到输出,也没法正常收尾,只能凭感觉去猜、去杀进程。

问题的根不在任务本身,而在会话的归属:普通 SSH 会话把程序绑在当前终端上,终端一断,程序就收到挂断信号。tmux 解决的正是这一点:它在服务器上建一个独立于终端的会话,程序跑在会话里,终端只是“看”会话的一扇窗。窗关了,会话和程序都不受影响。

安装与第一个会话

大多数发行版一行命令就能装好:

# Ubuntu / Debian
sudo apt install tmux
# CentOS / RHEL
sudo yum install tmux

装好后,在服务器上输入 tmux 就进入一个新会话。看起来和普通终端没什么两样,只是最下方多了一条状态栏,显示会话名、窗口和时间。这时跑一个耗时命令,比如:

python train.py

然后按下 Ctrl+b 再按 d(detach,分离),你就回到了原来的终端,而训练仍在会话里继续跑。哪怕这时把 SSH 关掉、电脑合盖,服务器上的会话也不会停。

断线重连:会话还在原地等你

重新 SSH 登录后,一条命令就能回到原来的会话:

tmux attach

如果有多个会话,先列出来再挑:

tmux ls
tmux attach -t 0

tmux ls 会显示每个会话的名字和窗口数,attach -t 0 就是连到编号为 0 的那个。回到会话里,之前的输出、正在跑的程序都原样在场,就像从没断过线一样。这就是 tmux 最核心的价值:把“人在线”与“程序运行”解耦。

窗口与分屏:一个终端当几个用

一个会话里可以开多个窗口和分屏,不用来回开好几个 SSH 连接:

  • 新建窗口:Ctrl+b 再按 c
  • 切换窗口:Ctrl+b 再按 n(下一个)或 p(上一个)
  • 左右分屏:Ctrl+b 再按 %
  • 上下分屏:Ctrl+b 再按 "
  • 在分屏间移动:Ctrl+b 再按方向键

一个常见搭配是:左边窗口跑服务日志,右边窗口敲命令查问题;或者一个窗口跑训练、另一个窗口看 GPU 占用。窗口和分屏都属于同一个会话,断线重连后布局也都在。

几个值得养成的好习惯

第一,给会话起个有意义的名字,而不是用默认编号:

tmux new -s train
tmux attach -t train

这样 tmux ls 里一眼就能认出哪个是训练、哪个是数据处理。

第二,长时间任务开始前先确认自己在 tmux 里。一个简单的自查方法是看终端底部有没有 tmux 的状态栏;没有的话,先 tmux 再启动任务,成本只有一秒,省下的可能是几小时的重跑。

第三,任务跑完记得清理。exit 退出会话里的 Shell,或者用 tmux kill-session -t train 删掉不再需要的会话,避免服务器上堆满无人认领的旧会话。

小结

tmux 并不复杂,日常高频操作其实只有三条:tmux 建会话、Ctrl+b d 分离、tmux attach 回来。但它改变了一个关键假设:程序的生命周期不再跟着你的终端走。学会这一招之后,远程跑长任务就不再是一场“千万别断网”的赌博——断线了,重连回来,任务还在原地等你。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。