用 tmux 管住长时间任务,SSH 断了也不丢进度

举报
yd_257918670 发表于 2026/10/30 06:17:48 2026/10/30
【摘要】 用 tmux 管住长时间任务,SSH 断了也不丢进度远程服务器上跑编译、训练、数据同步或日志排查时,SSH 一断进程就没了。nohup 和 & 能保活,但要回看输出、切多个窗口就不方便。tmux 是终端多路复用器:会话挂在服务器后台,重连后还能贴回去,适合日常运维和开发。 安装与创建会话多数发行版可直接装:# Debian/Ubuntusudo apt install tmux# RHEL...

用 tmux 管住长时间任务,SSH 断了也不丢进度

远程服务器上跑编译、训练、数据同步或日志排查时,SSH 一断进程就没了。nohup 和 & 能保活,但要回看输出、切多个窗口就不方便。tmux 是终端多路复用器:会话挂在服务器后台,重连后还能贴回去,适合日常运维和开发。

安装与创建会话

多数发行版可直接装:

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

创建命名会话,进入后正常敲命令即可:

tmux new -s build

想暂时离开:按 Ctrl-b,再按 d(detach)。会话继续跑,SSH 关掉也没事。习惯给会话起有意义的名字,例如 sync-logs、train-v2,几天后回来也不至于懵。

重连与列出会话

tmux ls
tmux attach -t build

只有一个会话时,tmux a 就够。注意:机器重启后内存里的会话会消失,真正要长期保活的任务仍应写成 systemd 服务或可重启的脚本;tmux 更适合「人还在跟」的中长任务。

分屏与切窗

前缀键默认是 Ctrl-b,松开后再按功能键:

  • %:左右分屏
  • ":上下分屏
  • 方向键:在窗格间移动
  • c:新建窗口;n / p:下一个 / 上一个窗口
  • ,:给当前窗口改名
  • x:关掉当前窗格(需确认)

分屏后可以一边 tail -f 看日志,一边改配置或跑命令,不必开多个 SSH 客户端来回切。

复制模式与滚动回看

输出一刷而过时:Ctrl-b [ 进入复制模式,用方向键或 PageUp/PageDown 翻页,q 退出。需要复制一段文本时,在复制模式里用空格标记起点、回车结束(具体键位随版本略有差异),再在别的窗格 Ctrl-b ] 粘贴。

脚本里非交互创建

cron 或部署脚本可以后台拉起会话:

tmux new-session -d -s nightly './nightly.sh >>/var/log/nightly.log 2>&1'

-d 表示创建后不附着。查进度时再 tmux attach -t nightly。任务结束后记得 tmux kill-session -t nightly,避免残留空会话。

和 screen / systemd 怎么选

  • 临时交互、要分屏看日志:优先 tmux
  • 服务级守护、开机自启、崩溃拉起:用 systemd
  • 老环境只有 screen:也能 detach/attach,但分窗和配置不如 tmux 顺手

不必把所有进程都塞进 tmux;把「人还要盯一会儿」的工作放进去,收益最大。

常见坑

  1. 前缀键冲突:不少人把 Ctrl-b 改成 Ctrl-a(screen 习惯)。改完记得同步到所有机器的 ~/.tmux.conf,否则手感不一致。
  2. 嵌套 tmux:在已有会话里再 SSH 到另一台又开 tmux,前缀键会「吃」在外层。外层先按一次前缀再按 Ctrl-b(或你改过的键)才能把前缀传给内层;更干净的做法是内层换不同前缀。
  3. 会话太多:长期 new 不清理会留下一堆 dead 会话。定期 tmux ls,不用的 tmux kill-session -t 名字。
  4. 权限与用户:用 root 开的会话,普通用户 attach 不上;反之亦然。按实际登录用户创建会话即可。

把这些习惯定下来,远程排障会轻松很多。
本地开发也可以开一个常驻 dev 会话,里面分屏跑前端、后端和日志,比开三个终端标签更不容易搞丢。团队协作时,在文档里写清「用哪个会话名、如何 attach」,能减少新人上手成本。

小结

tmux 解决三件事:断线保活、多窗口并行、离开再回来接着看。上手只记 new、detach、attach 和分屏快捷键就够日常用。再往后可以改 ~/.tmux.conf 自定义前缀键和状态栏,但多数场景默认配置已经够用。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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