尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
终端的瑞士军刀:tmux——断线不丢会话,一屏多用窗格
tmux 是一个终端复用器它让你在一个终端窗口里管理多个独立的会话、窗口和窗格并且这些会话在 SSH 断连或主动分离后依然在后台运行随时可以重新连接回来。一、tmux 是什么tmuxTerminal Multiplexer是一个终端复用器。它允许在一个终端屏幕上创建、访问和控制多个终端。最核心的能力是tmux 可以从当前屏幕分离detach在后台继续运行之后随时重新附加reattach。为什么需要它如果你用 SSH 连远程服务器跑一个长时间的深度学习训练网络一断SSH 会话结束进程很可能被终止几个小时的训练白费。tmux 解决的正是这个问题会话与终端窗口解耦。你关掉终端、断网、甚至关机tmux 里的进程照常跑。回来后tmux attach一切照旧。二、核心概念会话、窗口、窗格tmux 的层次结构是Session → Window → Pane三者是包含关系。Session会话会话是 tmux 的顶层工作区是一个“伪终端集合”。每个会话有名字可以独立分离和重连。你可以同时有多个会话比如一个跑训练、一个跑数据处理、一个日常运维。会话是持久的会存活于意外断连如 SSH 超时或主动分离C-b d之后。Window窗口一个会话包含一个或多个窗口。窗口占据整个屏幕相当于“标签页”。每个窗口有自己的编号和名称状态栏底部显示当前窗口信息。Pane窗格一个窗口可以被分割成多个矩形窗格每个窗格是独立的伪终端。这意味着你可以在同一个窗口里左边跑htop右边跑日志tail -f下面再开一个 shell 写代码全部同时可见。这种“会话-窗口-窗格”三层模型是 tmux 区别于 screen 的关键screen 只有“窗口”一层概念而 tmux 将窗口和窗格拆成了两个对象管理更灵活。三、工作原理客户端-服务器模型tmux 采用客户端-服务器client-server架构。当你运行tmux时实际上启动了一个tmux 服务器进程服务器管理所有会话、窗口和窗格。你看到的终端界面是一个客户端进程通过/tmp下的 Unix 域套接字与服务器通信。这种设计的直接好处是多个客户端可以连接到同一个会话。比如你和同事通过 SSH 连到同一台服务器可以附加到同一个 tmux 会话实时看到相同的终端输出协作调试。窗口可以在不同会话之间自由移动客户端也可以轻松切换会话。一个需要注意的副作用如果 tmux服务器进程崩溃所有会话都会丢失。但实践中 tmux 非常稳定。四、安装与启动# Ubuntu / Debian sudo apt install tmux # CentOS / Fedora sudo yum install tmux # macOS brew install tmux启动 tmuxtmux # 创建匿名会话 tmux new -s work # 创建名为 work 的会话启动后终端底部会出现状态栏显示当前会话和窗口信息。五、常用命令与快捷键tmux 的快捷键需要一个前缀键prefix默认是Ctrlb。按完前缀键再按功能键。会话管理操作命令 / 快捷键新建命名会话tmux new -s mysession列出会话tmux ls附加到会话tmux attach -t mysession分离会话Ctrlb然后d杀掉会话tmux kill-session -t mysession窗口与窗格操作操作快捷键新建窗口Ctrlb然后c垂直分屏左右Ctrlb然后%水平分屏上下Ctrlb然后切换窗格Ctrlb然后方向键关闭窗格输入exit或Ctrld翻页查看历史输出tmux 默认不支持鼠标滚轮。按Ctrlb然后[进入翻页模式用方向键或 PageUp/PageDown 查看历史日志按q退出。六、配置与插件基础配置~/.tmux.conftmux 的默认配置极简真正的力量来自自定义。几个最实用的配置# 开启鼠标支持点击切换窗格、拖拽调整大小、滚轮翻页 set -g mouse on # 把前缀键从 Ctrlb 改为 Ctrla更顺手 unbind C-b set -g prefix C-a bind C-a send-prefix # 窗口编号从 1 开始 set -g base-index 1 setw -g pane-base-index 1 # 用 | 和 - 分屏比 % 和 更直观 bind | split-window -h -c #{pane_current_path} bind - split-window -v -c #{pane_current_path}改完后重载配置tmux source-file ~/.tmux.conf。插件管理TPMTmux Plugin ManagerTPM是管理 tmux 插件最方便的方式。安装步骤# 1. 克隆 TPM git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm # 2. 在 ~/.tmux.conf 底部添加 set -g plugin tmux-plugins/tpm set -g plugin tmux-plugins/tmux-sensible run ~/.tmux/plugins/tpm/tpm # 3. 重载配置后按 Ctrlb I 安装插件常用插件包括tmux-resurrect保存和恢复会话、tmux-continuum自动保存、vim-tmux-navigatorVim 和 tmux 之间无缝切换窗格。七、脚本化与自动化tmux 几乎所有的命令都可以在 shell 脚本中非交互执行。这意味着你可以自动化终端工作流。常见模式# 检查会话是否存在避免重复创建 tmux has-session -t mywork 2/dev/null || tmux new -s mywork -d # 在指定会话中发送命令 tmux send-keys -t mywork python train.py Enter # 捕获窗格输出 tmux capture-pane -t mywork -p # 分离模式创建窗口和窗格 tmux new -s work -d tmux split-window -h -t work这种能力让 tmux 成为自动化交互式 CLI 工具的理想载体。像git rebase -i、vim这类需要实时输入输出的交互程序可以通过 tmux 的send-keys和capture-pane实现程序化控制。八、常见问题排查问题原因与解决颜色显示不正确检查$TERM是否为screen-256color或tmux-256color在配置中设置set -g default-terminal tmux-256colorCPU 占用高自动重命名窗口可能消耗 CPU关掉setw -g automatic-rename offVim 中 Esc 键响应慢在配置中加入set -g escape-time 0Putty 中 Ctrl方向键无效终端发送的按键序列与 tmux 预期不符需要调整 Putty 的终端设置或 tmux 的 key bindingmacOS 权限错误/tmp下 socket 目录权限问题检查/private/tmp/tmux-uid的权限九、口述总结“tmux 是终端复用器核心价值是把终端会话和终端窗口解耦。它的三层模型是 Session、Window、Pane会话是顶层工作区窗口是标签页窗格是分割区域。底层是客户端-服务器架构服务器管理所有会话客户端通过 Unix socket 连接所以多个客户端可以共享同一个会话。最常用的场景是 SSH 到远程服务器后跑长时间任务即使断网或关掉终端tmux attach就能恢复。快捷键默认前缀是 Ctrlb分离是 Ctrlb d分屏是 Ctrlb % 和 Ctrlb 。配置写 ~/.tmux.conf插件用 TPM 管理。tmux 还支持完全脚本化可以用send-keys和capture-pane自动化交互式 CLI 工具。面试里如果被追问我会强调tmux 的核心价值不是‘多开终端’而是‘会话持久化’——它让进程的生命周期独立于网络连接和终端窗口这是远程开发和长任务运行的刚需。”
RELATED

相关推荐

安全通道上的搬运工:SSH、SCP、SFTP、WinSCP 到底是什么关系?

安全通道上的搬运工:SSH、SCP、SFTP、WinSCP 到底是什么关系?

SSH 是底层“安全通道协议”,SCP 和 SFTP 是跑在这条通道上的“文件搬运工”,WinSCP 则是 Windows 下把这些搬运工包装成图形界面的“客户端软件”。OpenSSH 是 SSH 协议最主流的实现,提供了 ssh、scp、sftp 等命令行工具。一、先理清层次&am…

📅 2026/10/13 0:16:36
Python天气预测项目实战:从数据抓取到模型部署全流程解析

Python天气预测项目实战:从数据抓取到模型部署全流程解析

简介:这是一套面向Python初学者与数据分析爱好者的天气预测与可视化完整项目源码,适合用作课程设计、毕业设计或数据挖掘练手案例。项目以Python为核心,串联数据采集、清洗、建模预测到前端展示的完整链路,帮助读者理解天气数据从…

📅 2026/10/13 0:16:36
Ubuntu 22.04 运行 CC-Switch AppImage 中文乱码:把 locale 与字体配置改到 TaoToken 的排查清单

Ubuntu 22.04 运行 CC-Switch AppImage 中文乱码:把 locale 与字体配置改到 TaoToken 的排查清单

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/13 0:16:36
MORE NEWS

更多资讯

📰

Function Call、Agent、MCP、RAG 四件套:把 endpoint 改到 TaoToken 的联调清单

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

Java面试进阶:从基础到微服务的三轮问答实战解析

先说点实在的。Java面试这几年卷得厉害,原因很简单:Java这个生态太庞大了,从JVM底层到Spring全家桶,再到微服务那一整套分布式组件,一个候选人要掌握的东西横跨了好几个“时代”。我做过面试官,也辅导过不少…

📰

AnyPS5游戏串流实战:低延迟局域网音视频传输架构与调优指南

1. 从"AnyPS5"这个名字说起:一个跨平台游戏串流工具的设计初衷第一次看到"AnyPS5"这个项目名,很多人会以为这是某个破解工具或者模拟器。实际上,它解决的是一个非常具体的痛点:如何让家里的主力游戏主机画面&…

📰

MyDAC v5.10 源码级MySQL数据访问组件深度解析与定制指南

简介:本资源是Delphi与CBuilder开发者专用的MySQL数据库直连组件MyDAC v5.10源码包,面向使用Delphi 7–2007及CBuilder开发MySQL应用的中高级开发者,解决原生数据库连接性能低、依赖中间件、缺乏事务与存储过程深度支持等痛点。压缩包共1403个…

📰

GORM 实战避坑指南:从 ORM 原理到 CRUD、事务与缓存

在 Go 后端项目里摸爬滚打这几年,我敢说GORM是我用得最久、也最“又爱又恨”的一个 ORM 框架。要说清楚它到底解决了什么问题,最直接的一句话是:它让你在 Go 里操作数据库,从“手写一堆重复的 SQL 和结构体赋值”变成“直接把数据…

📰

哈工大CSAPP期末题:系统级工程能力压力测试

简介:本资源为哈尔滨工业大学《计算机系统》(CSAPP)课程期末考试真题试卷,面向计算机专业本科生、考研备考学生及系统级编程学习者,聚焦计算机体系结构、汇编与C语言协同、操作系统安全机制等核心能力训练。文件为单个…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬