Linux tmux 一次讲明白:断线不丢会话、窗口分屏与三个常见坑

举报
yd_223785715 发表于 2026/11/10 22:17:45 2026/11/10
【摘要】 在云服务器上跑一个要半小时的任务,SSH 一断网,命令就跟着死了;第二天再登录,又得从头跑。问题不在网络,在你没用终端复用器。tmux 能把会话留在服务器上:你断开,它继续跑;你回来,它还在原地。 1. 为什么需要 tmux没有 tmux 时,命令的生死绑在 SSH 连接上:窗口一关、网络一抖,后台任务就收到 SIGHUP 退出。tmux 在服务器上另起一个会话(session),命令跑在会...

在云服务器上跑一个要半小时的任务,SSH 一断网,命令就跟着死了;第二天再登录,又得从头跑。问题不在网络,在你没用终端复用器。tmux 能把会话留在服务器上:你断开,它继续跑;你回来,它还在原地。

1. 为什么需要 tmux

没有 tmux 时,命令的生死绑在 SSH 连接上:窗口一关、网络一抖,后台任务就收到 SIGHUP 退出。tmux 在服务器上另起一个会话(session),命令跑在会话里,与你的连接解耦。手机、电脑换着登录,看到的都是同一个会话,正在跑的任务、翻过的日志都在。

2. 创建、离开与接回:三个命令

# 新建一个有名字的会话(名字比数字好认)
tmux new -s deploy

# 离开会话:先按 Ctrl-b,再按 d(detach)
# 会话留在服务器上继续跑,SSH 断了也没事

# 第二天接回
tmux attach -t deploy

# 看看服务器上都有哪些会话
tmux ls

记住这个节奏:新建 → 做事 → Ctrl-b d 离开 → attach 接回。离开不是退出,exit 才是退出——在会话里打 exit 会把会话整个关掉。

3. 窗口与分屏:一个会话当多个终端用

一个会话里可以开多个窗口(window),一个窗口里还能再分屏(pane),都是 Ctrl-b 开头:

Ctrl-b c   # 新建窗口
Ctrl-b n   # 下一个窗口
Ctrl-b p   # 上一个窗口
Ctrl-b %   # 左右分屏
Ctrl-b "   # 上下分屏
Ctrl-b 方向键  # 在分屏之间移动
Ctrl-b x   # 关闭当前分屏

典型用法:左边分屏跑日志 tail -f,右边分屏敲命令;或者一个窗口跑服务、一个窗口改配置,Ctrl-b n 来回切,不用开好几个 SSH 连接。

4. 坑一:把 detach 当成退出,把退出当成 detach

新手最容易混的是这两个动作:Ctrl-b d 是暂时离开,会话和里面的进程都活着;直接关掉终端窗口,效果也类似——会话还在。但在会话里输入 exit 或按 Ctrl-d,是真的结束当前 shell,窗口里的最后一个 shell 退出后,整个会话就没了,里面跑的任务也随之结束。想保住任务就只用 Ctrl-b d 离开;确认不要了再 tmux kill-session -t deploy 显式清理。

5. 坑二:翻不动历史输出

tmux 里鼠标滚轮默认不翻屏,输出一多就看不到前面的日志。按 Ctrl-b [ 进入复制模式(copy mode),就能用方向键、PageUp 翻页查看,按 q 退出;想复制一段文字,在复制模式里用空格开始选、回车确认。

如果想直接用鼠标滚轮翻屏,可以在 ~/.tmux.conf 里加一行,保存后执行 tmux source-file ~/.tmux.conf 生效:

set -g mouse on

6. 坑三:tmux 里再开 tmux,快捷键全乱了

在本地终端已经进了 tmux,又 SSH 到服务器再开一个 tmux,Ctrl-b 会被外层先截走,内层的命令发不出去。办法有两个:要么本地不用 tmux、只在服务器上用;要么给内层换个前缀键,比如在服务器的 ~/.tmux.conf 里写 set -g prefix C-a,内层就用 Ctrl-a 操作,外层仍用 Ctrl-b,互不打架。

结语

tmux 的链条很短:新建会话 → 跑任务 → Ctrl-b d 离开 → 随时 attach 接回。服务器上的长任务,从此不再怕断网。你第一次用 tmux 保住的是哪个任务?评论区聊聊。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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