news 2026/4/15 18:51:48

tmux终端复用完全指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
tmux终端复用完全指南

SSH连到服务器,跑个任务,终端一断任务就没了。

用tmux可以解决这个问题——会话在服务器上一直跑,你断开连接也没事,下次连上来还在。

而且tmux可以分屏、多窗口,一个终端顶好几个用。

安装

# Debian/Ubuntuaptinstalltmux# CentOSyuminstalltmux# macOSbrewinstalltmux

基本概念

tmux有三层结构:

Session(会话) ├── Window(窗口) │ ├── Pane(面板) │ └── Pane └── Window └── Pane
  • Session:一个工作环境,可以有多个窗口
  • Window:一个窗口,可以分割成多个面板
  • Pane:实际的终端

快速上手

创建和管理会话

# 创建会话tmux# 创建匿名会话tmux new -s work# 创建名为work的会话# 断开会话(会话继续在后台运行)# 快捷键:Ctrl+b d# 查看所有会话tmuxls# 重新连接会话tmux attach# 连接最近的会话tmux a -t work# 连接名为work的会话# 杀掉会话tmux kill-session -t work

常用快捷键

tmux的快捷键都是 Ctrl+b 开头,称为前缀键。

先按 Ctrl+b,松开,再按后面的键。

会话操作

  • Ctrl+b d- 断开会话(detach)
  • Ctrl+b s- 切换会话
  • Ctrl+b $- 重命名会话

窗口操作

  • Ctrl+b c- 新建窗口
  • Ctrl+b n- 下一个窗口
  • Ctrl+b p- 上一个窗口
  • Ctrl+b 数字- 切换到指定窗口
  • Ctrl+b ,- 重命名窗口
  • Ctrl+b &- 关闭窗口

面板操作

  • Ctrl+b %- 左右分屏
  • Ctrl+b "- 上下分屏
  • Ctrl+b 方向键- 切换面板
  • Ctrl+b x- 关闭当前面板
  • Ctrl+b z- 最大化/恢复当前面板
  • Ctrl+b {- 向前移动面板
  • Ctrl+b }- 向后移动面板
  • Ctrl+b Ctrl+方向键- 调整面板大小

其他

  • Ctrl+b ?- 显示所有快捷键
  • Ctrl+b :- 进入命令模式
  • Ctrl+b [- 进入复制模式(可以滚动查看历史)

实用场景

场景1:跑长任务

# 创建会话tmux new -s deploy# 执行部署脚本./deploy.sh# 断开(Ctrl+b d)# 该干啥干啥去# 回来看结果tmux a -t deploy

即使网络断了,部署任务也在继续执行。

场景2:多任务并行

# 创建会话tmux new -s dev# 左右分屏(Ctrl+b %)# 左边跑服务npmrun dev# 切到右边(Ctrl+b →)# 上下分屏(Ctrl+b ")# 看日志tail-f /var/log/app.log# 切到下面(Ctrl+b ↓)# 连数据库mysql -u root -p

一个终端三个任务同时看。

场景3:分享终端

两个人可以同时连接同一个tmux会话,看到相同的内容,适合远程pair programming:

# A创建会话tmux new -s pair# B连接同一个会话tmux a -t pair

两个人看到的完全同步。

配置优化

tmux默认配置不太好用,建议自定义。创建~/.tmux.conf

# 设置前缀键为Ctrl+a(更顺手)unbind C-bset-g prefix C-abindC-a send-prefix# 开启鼠标支持set-g mouse on# 设置历史记录长度set-g history-limit50000# 窗口编号从1开始set-g base-index1setw -g pane-base-index1# 窗口自动重新编号set-g renumber-windows on# 设置终端颜色set-g default-terminal"screen-256color"# 减少延迟set-sg escape-time0# 状态栏set-g status-stylebg=black,fg=whiteset-g status-left"[#S] "set-g status-right"%Y-%m-%d %H:%M"# 分屏快捷键更直观bind|split-window -h -c"#{pane_current_path}"bind- split-window -v -c"#{pane_current_path}"# vim风格的面板切换bindh select-pane -Lbindj select-pane -Dbindk select-pane -Ubindl select-pane -R# 快速重载配置bindr source-file ~/.tmux.conf\;display"配置已重载"# 复制模式用vi键位setw -g mode-keysvi

改完后重载:

tmux source-file ~/.tmux.conf# 或者在tmux里按 Ctrl+b :source-file ~/.tmux.conf

复制粘贴

这是tmux里比较麻烦的地方。

方法1:鼠标复制(开启mouse后)

按住Shift,用鼠标选中,然后用系统的复制(Ctrl+Shift+C或Cmd+C)。

方法2:tmux复制模式

# 进入复制模式Ctrl+b[# 用方向键或vim键位移动# 按空格开始选择# 按回车复制# 粘贴Ctrl+b]

方法3:和系统剪贴板同步

Linux(需要xclip):

# ~/.tmux.confbind-T copy-mode-vi y send-keys -X copy-pipe-and-cancel"xclip -selection clipboard"

macOS:

# ~/.tmux.confbind-T copy-mode-vi y send-keys -X copy-pipe-and-cancel"pbcopy"

持久化会话

tmux的会话在服务器重启后会丢失。如果需要持久化,用tmux-resurrect插件。

安装TPM(插件管理器)

gitclone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

配置插件

# ~/.tmux.conf 末尾添加# 插件set-g @plugin'tmux-plugins/tpm'set-g @plugin'tmux-plugins/tmux-resurrect'set-g @plugin'tmux-plugins/tmux-continuum'# 自动保存和恢复set-g @continuum-restore'on'set-g @continuum-save-interval'15'# 初始化TPMrun'~/.tmux/plugins/tpm/tpm'

重载配置后按Ctrl+b I安装插件。

之后:

  • Ctrl+b Ctrl+s- 保存会话
  • Ctrl+b Ctrl+r- 恢复会话

和screen的比较

另一个常用的终端复用工具是screen,对比一下:

特性tmuxscreen
分屏方便麻烦
配置灵活简单
状态栏好看简陋
脚本化
默认安装

推荐用tmux,功能更强。但如果服务器只有screen,基本用法差不多:

# screen基本操作screen# 创建screen-S name# 创建命名会话Ctrl+a d# 断开screen-r name# 恢复screen-ls# 列出会话

快速参考

# 会话tmux new -s name# 新建tmuxls# 列出tmux a -t name# 连接tmux kill-session -t name# 删除# 在tmux内Ctrl+b d# 断开Ctrl+b s# 切换会话Ctrl+b c# 新窗口Ctrl+b n/p# 切换窗口Ctrl+b %# 左右分屏Ctrl+b "# 上下分屏Ctrl+b 方向键# 切换面板Ctrl+b z# 最大化面板Ctrl+b x# 关闭面板Ctrl+b[# 复制模式Ctrl+b ?# 帮助

tmux用熟了会上瘾。SSH连服务器第一件事就是tmux a,断网也不怕任务挂。

核心就三个操作:创建会话、分屏、断开/恢复。其他的用到再学。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/13 0:36:06

YOLO目标检测模型生命周期管理:从训练到退役

YOLO目标检测模型生命周期管理:从训练到退役 在智能制造车间的一条SMT贴片生产线上,摄像头每秒捕捉数百帧PCB板图像,系统需要在毫秒级时间内判断是否存在元件缺失或焊点虚焊。传统的图像处理算法面对光照波动和元器件微小变异时频频“失明”&…

作者头像 李华
网站建设 2026/4/14 18:28:26

OpenAMP初探:基于STM32MP1的入门级项目应用

OpenAMP实战解析:如何在STM32MP1上实现Cortex-A7与M4的高效协同?你有没有遇到过这样的场景?系统需要同时处理复杂的网络通信和图形界面,又要保证电机控制或传感器采集的硬实时响应。用Linux做主控,调度延迟动辄几毫秒&…

作者头像 李华
网站建设 2026/4/15 16:17:39

彼得林奇的“成长股“在不同经济周期的表现

彼得林奇的“成长股”在不同经济周期的表现 关键词:彼得林奇、成长股、经济周期、股票表现、投资策略 摘要:本文聚焦于彼得林奇所倡导的“成长股”在不同经济周期中的表现。首先介绍了研究的背景、目的、预期读者和文档结构,对相关术语进行了定义。接着阐述了成长股的核心概…

作者头像 李华
网站建设 2026/4/15 16:15:59

YOLO模型训练资源预约系统:提升GPU利用率

YOLO模型训练资源预约系统:提升GPU利用率 在现代AI研发环境中,一个看似简单却频繁上演的场景是:某位工程师深夜提交了一个YOLOv8训练任务,结果发现四块A100显卡中只有一块可用——其余都被“占着不用”的任务长期锁定。更糟的是&a…

作者头像 李华
网站建设 2026/4/15 16:14:59

YOLO目标检测模型鲁棒性测试:对抗样本攻击实验

YOLO目标检测模型鲁棒性测试:对抗样本攻击实验 在自动驾驶汽车将一张贴了特殊图案的停车标志误识别为“限速40”时,它不会减速——这并非科幻场景,而是2017年MIT研究人员用对抗贴纸实现的真实攻击案例。类似的风险正随着YOLO等高效目标检测模…

作者头像 李华
网站建设 2026/4/15 18:01:19

YOLO目标检测在智能停车管理系统中的集成

YOLO目标检测在智能停车管理系统中的集成 城市街头,一辆车在停车场入口徘徊数圈却始终找不到空位;收费亭前排起长龙,司机摇下车窗焦急等待人工核对信息——这样的场景每天都在上演。随着机动车保有量突破3亿辆大关,传统依赖地磁线…

作者头像 李华