GitHub 43k Star 的终端神器:SSH 断网不丢进程,一屏搞定所有工作
使用过终端做开发或者运维的,几乎都遇见过这个场景:
SSH 连上远程服务器,跑了一个需要几小时的训练任务,结果公司 VPN 掉线了一秒,SSH 连接断开,程序直接终止。一切从头来过。
或者更常见的场景:同时需要看日志、改代码、跑命令,三件事开了三个终端窗口,再加上 SSH 的几个连接,桌面乱成一锅粥,切来切去找不着自己在干什么。
终端窗口管理失控,是远程开发和服务器运维最普遍的效率杀手。
今天要聊的这个工具,把上面两个问题都彻底解决了,还顺带给你的终端加上了「标签页」和「分屏」功能。
一、tmux 是什么
在 GitHub 上有个叫 tmux 的项目,Star 数已经突破了 43k+,是开源终端工具里最受欢迎的之一。
tmux 的全名是 Terminal Multiplexer,中文叫「终端复用器」。它由 Nicholas Marriott 创建,最早发布于 2007 年,项目本身比大多数人用过的工具都老,至今仍由原作者积极维护——最近一次提交就在 3 天前。
简单来说,它做了一件很优雅的事:把「终端窗口」和「运行中的程序」彻底解耦。程序跑在 tmux 的会话里,即使终端关了、网断了,程序仍在服务器后台稳定运行,下次连接随时接回来继续工作。
ISC 协议开源,完全免费,支持 Linux、macOS、OpenBSD 等所有主流 Unix-like 系统。
二、它能解决什么问题
这个项目不是那种 README 写得很漂亮、实际用起来一堆坑的玩具工具。tmux 在服务器运维和远程开发领域用了将近 20 年,功能已经打磨得非常稳定。
2.1 会话保持——断网不怕,程序不停
tmux 最核心的能力是「会话分离」。
普通 SSH 连接里,一旦网络断开,正在运行的程序会随着 SSH 会话终止而终止。tmux 把程序运行在服务器上的「会话」里,终端只是一个「观察窗口」,随时可以断开、随时可以重连,程序不受影响。
# 在服务器上创建一个命名会话tmux new -s training# 在会话里启动长时间任务python train.py# 按 Ctrl+b,再按 d,分离会话(程序继续在后台跑)# 此时就算 SSH 断线也没关系# 重新连接服务器后,恢复会话tmux attach -t training
跑模型训练、数据处理、编译任务,再也不用对着终端祈祷网络别掉了。
2.2 分屏操作——一个终端,多个视图
tmux 可以把一个终端窗口分割成多个「窗格」,每个窗格独立运行程序,互不干扰。
┌─────────────────┬──────────────────┐│ vim 编辑代码 │ tail 查看日志 ││ │ │├─────────────────┴──────────────────┤│ bash 执行命令 │└────────────────────────────────────┘
常用分屏快捷键(前缀键默认为 Ctrl+b):
-
• Ctrl+b %—— 垂直分屏(左右) -
• Ctrl+b "—— 水平分屏(上下) -
• Ctrl+b 方向键—— 切换到相邻窗格 -
• Ctrl+b z—— 最大化/还原当前窗格
写代码、看日志、跑测试,全在一个窗口里完成,不需要反复切换窗口。
2.3 窗口管理——像浏览器标签一样管理任务
在一个 tmux 会话里,可以创建多个「窗口」,相当于浏览器的标签页。每个窗口有自己的名字、工作目录和运行状态,底部状态栏实时显示。
常用窗口快捷键:
-
• Ctrl+b c—— 新建窗口 -
• Ctrl+b n / p—— 切换到下一个/上一个窗口 -
• Ctrl+b w—— 窗口列表(带预览,可用方向键选择) -
• Ctrl+b ,—— 给当前窗口重命名
一个会话管多个项目,每个项目一个窗口,清晰不混乱。
2.4 脚本化启动——环境一键恢复
tmux 支持通过配置文件和脚本自动化创建会话布局。配合工具如 tmuxinator,可以在服务器上预定义好「项目环境」,一条命令恢复整套工作区:哪个窗口跑服务,哪个窗格看日志,哪里编辑代码,全都按配置好的结构打开。
每次重连服务器不再需要重新手动打开一堆窗口和目录。

三、快速上手
tmux 的安装非常简单,主流系统包管理器直接搞定:
# macOSbrew install tmux# Ubuntu/Debiansudo apt install tmux# CentOS/RHELsudo yum install tmux
装好之后,最常用的工作流程只有 5 步:
# 1. 创建命名会话tmux new -s myproject# 2. 在会话里正常工作
如果想让 tmux 更好用,可以创建 ~/.tmux.conf 添加一些常用配置:
# 启用鼠标支持(可以用鼠标点击切换窗格)set -g mouse on# 减少按键响应延迟set -sg escape-time 10# 增大历史记录行数set -g history-limit 50000
修改配置后执行 tmux source-file ~/.tmux.conf 即时生效,不需要重启。
四、适合谁用
-
• 远程服务器开发者:SSH 连接不稳定或需要长时间运行任务,会话保持功能是刚需 -
• 运维工程师:需要同时管理多台服务器、监控多个服务,分屏和多窗口让工作更有条理 -
• AI / 机器学习工程师:模型训练动辄几小时,断网不停机是最实用的需求 -
• 喜欢命令行工作流的开发者:和 Vim/Neovim 搭配使用,构建完整的纯键盘开发环境
五、写在最后
tmux 给我最大的感受是——它解决的是真实痛点,而且解决得非常彻底。
会话、窗口、窗格三层结构的设计非常优雅,层次清晰,几乎覆盖了终端管理的所有使用场景。一旦养成了在 tmux 里工作的习惯,回到裸终端会很不适应——就像习惯了多标签浏览器之后,很难接受一次只开一个网页。
客观来说,tmux 的学习曲线确实存在。Ctrl+b 前缀键的设计需要一定时间适应,快捷键组合也比较多,刚开始可能需要把常用命令打印出来贴着用。但这个门槛大概只需要一两天就能跨过,之后操作会变得自然流畅。
它能帮你彻底告别 SSH 断线丢进程的焦虑,也能把凌乱的终端窗口整理成有序的工作区。如果你在服务器上工作,或者需要同时处理多个终端任务,tmux 是值得花时间掌握的工具。
开源地址:https://github.com/tmux/tmux
Wiki 文档:https://github.com/tmux/tmux/wiki
觉得有用的话,点个赞、收藏一下,也欢迎转发给需要的朋友。
有什么想聊的,评论区见。
关注「妙想栈」,每天带你发现 GitHub 上最值得关注的开源项目。
夜雨聆风