Tmux 终端复用入门:SSH 断线也不丢会话

举报
yd_220055865 发表于 2026/11/09 13:06:06 2026/11/09
【摘要】 Tmux 终端复用入门:SSH 断线也不丢会话通过 SSH 连上云服务器跑一个耗时任务,正跑到一半网络闪断,终端一关、任务也跟着没了——这种事几乎每个用过服务器的人都遇到过。Tmux 就是为解决这个问题而生的终端复用工具:它让会话在服务器后台持续运行,断线重连后能原样接回来。本文从零讲清 tmux 的安装、会话、窗口与窗格,以及几个最常用的实战场景。 一、tmux 是什么tmux 把一个终...

Tmux 终端复用入门:SSH 断线也不丢会话

通过 SSH 连上云服务器跑一个耗时任务,正跑到一半网络闪断,终端一关、任务也跟着没了——这种事几乎每个用过服务器的人都遇到过。Tmux 就是为解决这个问题而生的终端复用工具:它让会话在服务器后台持续运行,断线重连后能原样接回来。本文从零讲清 tmux 的安装、会话、窗口与窗格,以及几个最常用的实战场景。

一、tmux 是什么

tmux 把一个终端会话分成三层结构:

  • 会话(Session):一组窗口的集合,是 tmux 管理的基本单位。会话运行在服务器后台,即使 SSH 断开也不会消失。
  • 窗口(Window):会话里的一个全屏终端,类似浏览器的标签页,一个会话可以有多个窗口。
  • 窗格(Pane):窗口内部再切分出的小终端,同一个窗口里可以左右或上下并排显示多个窗格。

理解这三层关系,后面的命令就都好记了:会话管“整组任务”,窗口管“分屏切换”,窗格管“同屏并排”。

tmux 的所有快捷键都以一个前缀键开头,默认是 Ctrl+b:先按 Ctrl+b,松开,再按功能键。例如分离会话是 Ctrl+b 然后按 d。

二、安装与验证

Debian / Ubuntu:

sudo apt update && sudo apt install tmux

CentOS / RHEL 8+:

sudo dnf install tmux

macOS(用 Homebrew):

brew install tmux

装好后验证版本:

tmux -V

能正常输出版本号即安装成功。国内云服务器如果 apt 源较慢,可以先换国内镜像源再安装。

三、会话:新建、分离、接回

新建一个会话并起名,是使用 tmux 最常见的起点:

tmux new -s deploy

-s deploy 是会话名,起个见名知意的名子,比如部署叫 deploy、跑训练叫 train、看日志叫 logs。

在会话里正常执行命令,比如启动一个耗时较长的备份或编译。需要临时离开时,按 Ctrl+b 再按 d(detach,分离),会话就回到后台继续跑,终端回到 SSH 登录前的状态。

查看当前所有会话:

tmux ls

输出类似 deploy: 1 windows (created ...),能看到会话名、窗口数和创建时间。

重新接回会话:

tmux attach -t deploy

attach 可以简写为 a。如果只有一个会话,直接 tmux attach 即可。接回后屏幕和离开时一模一样,正在跑的命令、输出的日志都在。

会话里的任务跑完后,在会话内执行 exit 退出 shell,会话随之结束;也可以在会话外强制关闭:

tmux kill-session -t deploy

四、窗口与窗格:一个终端当多个用

窗口操作(都在 tmux 会话内按 Ctrl+b 开头):

  • 新建窗口:Ctrl+b c
  • 切换到下一个窗口:Ctrl+b n
  • 切换到上一个窗口:Ctrl+b p
  • 按编号切换:Ctrl+b 0、1、2……
  • 给当前窗口改名:Ctrl+b ,,输入新名字回车

窗格操作:

  • 左右分屏:Ctrl+b %
  • 上下分屏:Ctrl+b "
  • 在窗格之间切换:Ctrl+b 方向键,或 Ctrl+b o 按顺序轮换
  • 关闭当前窗格:Ctrl+b x,按 y 确认(或在窗格里直接 exit)

一个典型布局是:一个窗口里左右分屏,左边 tail -f 看日志,右边编辑配置文件;再开一个窗口专门跑长任务。窗口之间用 Ctrl+b n 切换,互不干扰。

五、一份够用的配置

tmux 的默认配置偏保守,很多人第一件事是打开鼠标支持:开启后可以用鼠标点选窗格、拖动调整大小、滚轮翻看历史输出。把下面这行写进家目录的 ~/.tmux.conf:

set -g mouse on

如果改完配置后想让已有的会话生效,在会话内执行:

tmux source-file ~/.tmux.conf

另一个常见改法是把前缀键从 Ctrl+b 换成 Ctrl+a(手感更顺),在配置文件中加入:

unbind C-b
set -g prefix C-a
bind C-a send-prefix

改前缀键只是个人习惯,不改也完全能用,建议先用默认键练熟基本操作再考虑定制。

六、三个实战场景

场景一:跑长任务不断线。 在服务器上编译大项目、备份数据库、下载大文件前,先 tmux new -s job,在里面启动任务,Ctrl+b d 分离。本地网络断了、电脑合盖了都没关系,任务在服务器后台继续跑;之后任何时间 tmux attach -t job 都能回来查看进度。

场景二:边看日志边改配置。 部署出问题时,一个窗口跑服务、一个窗口 tail -f 跟踪日志,再分一个窗格用编辑器改配置。日志和配置同屏对照,比来回切换 SSH 终端高效得多。

场景三:临时共享操作画面。 两个人排查同一台服务器时,一人新建会话,另一人用 tmux attach -t 接入同一个会话,双方看到的是同一个终端画面,适合远程结对排查问题。注意:这要求双方都有该服务器的登录权限,不要把会话共享给不可信的人。

七、tmux 与 nohup 的区别

很多人会问:后台运行任务用 nohup command & 不也行吗?两者定位不同:

  • nohup 适合“启动后就不用管”的单个命令,输出重定向到文件,之后只能看文件查结果。
  • tmux 适合“过程中还要回来交互”的任务:能看到实时输出、能中途输入命令、能同时管理多个窗口和窗格。

简单判断:如果任务跑起来后你还需要回来敲命令、看交互式输出,用 tmux;如果只是丢一个命令让它自己跑完,用 nohup 就够了。

八、常用命令速查

需求 命令 / 快捷键
新建会话 tmux new -s 名字
分离会话 Ctrl+b d
列出会话 tmux ls
接回会话 tmux attach -t 名字
关闭会话 tmux kill-session -t 名字
新建窗口 Ctrl+b c
切换窗口 Ctrl+b n / p / 数字
左右分屏 Ctrl+b %
上下分屏 Ctrl+b "
切换窗格 Ctrl+b 方向键
关闭窗格 Ctrl+b x

九、注意事项

  • 服务器重启后 tmux 会话会丢失,因为它保存在内存里。真正重要的长期任务,建议配合 systemd 服务来跑,tmux 只负责交互式场景。
  • 不要在 tmux 会话里再套一层 tmux:内外两层共用 Ctrl+b 前缀键,操作会互相干扰。
  • 公共服务器上用完记得分离而不是直接关终端;多人共用的机器上,会话名起得清晰一点,避免别人误关你的会话。

tmux 上手只需要记住四个动作:新建会话、分离、查看、接回,再加窗口和窗格的两组分屏键。先从“跑长任务前开个会话”这个习惯开始,断线丢任务的问题基本就不会再出现了。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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