全部文章

tmux 与 screen 终端复用

tmux 安装配置、会话管理、窗口分割、快捷键与常用配置

目录 19 节

tmux 与 screen 终端复用

终端复用器让你在 SSH 断开后保持进程运行,并支持多窗口、分屏操作。

这页适合做“远程开发和服务器维护时的会话管理指南”。如果你经常 SSH 到服务器、跑长任务、看日志、开多个 shell,tmux 往往会比反复重连终端省心很多。

先怎么选

  • tmux:新项目优先,功能更现代、生态更好、配置更灵活
  • screen:老环境兼容性好,很多系统自带,但功能体验相对老派

如果没有历史包袱,建议优先把 tmux 用顺;screen 主要作为“老机器应急兼容方案”保留。

tmux

安装

# Ubuntu/Debian
apt install tmux -y

# macOS
brew install tmux

会话管理

tmux                          # 新建会话
tmux new -s work              # 新建命名会话
tmux ls                       # 列出会话
tmux attach -t work           # 重新连接
tmux kill-session -t work     # 关闭会话

快捷键

tmux 的前缀键默认是 Ctrl + b,按下后再按功能键。

快捷键功能
Ctrl+b d分离会话(后台运行)
Ctrl+b c新建窗口
Ctrl+b n下一个窗口
Ctrl+b p上一个窗口
Ctrl+b 0-9切换到指定窗口
Ctrl+b ,重命名窗口
Ctrl+b &关闭窗口

分屏

快捷键功能
Ctrl+b %左右分屏
Ctrl+b "上下分屏
Ctrl+b 方向键切换面板
Ctrl+b z面板全屏/恢复
Ctrl+b x关闭面板
Ctrl+b Ctrl+方向键调整面板大小

推荐配置

~/.tmux.conf

# 改前缀键为 Ctrl+a
unbind C-b
set -g prefix C-a
bind C-a send-prefix

# 鼠标支持
set -g mouse on

# 从 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}"

# 256 色支持
set -g default-terminal "screen-256color"

# 状态栏
set -g status-style bg=black,fg=white
set -g status-right "%H:%M %Y-%m-%d"

重载配置:

tmux source-file ~/.tmux.conf

推荐会话工作流

一个很实用的日常方式是:

  1. 一个会话对应一个项目或一台服务器
  2. 一个窗口做编辑 / 命令入口
  3. 一个窗口跑服务
  4. 一个窗口盯日志
  5. 需要时再开分屏看监控或执行临时命令

这样即使 SSH 断线,回来后也能快速恢复上下文。

screen

更老牌的终端复用器,大部分 Linux 发行版预装。

screen                        # 新建会话
screen -S work                # 新建命名会话
screen -ls                    # 列出会话
screen -r work                # 重新连接
screen -X -S work quit        # 关闭会话

快捷键

前缀键是 Ctrl + a

快捷键功能
Ctrl+a d分离会话
Ctrl+a c新建窗口
Ctrl+a n下一个窗口
Ctrl+a p上一个窗口
Ctrl+a "窗口列表
Ctrl+a k关闭窗口
Ctrl+a S水平分屏
`Ctrl+a`
Ctrl+a Tab切换分屏

实用场景

保持服务运行

tmux new -s server
python app.py
# Ctrl+b d 分离
# SSH 断开后进程继续运行
# 重新连接:tmux attach -t server

多窗口开发

tmux new -s dev
# 窗口 0:编辑器
# Ctrl+b c 创建窗口 1:运行服务
# Ctrl+b c 创建窗口 2:日志监控

常见问题

退出 SSH 后进程也没了

这通常是因为任务根本没在 tmux / screen 会话里启动。先确认:

  • 是否先 tmux new -s name
  • 启动命令是否真的在该会话里执行
  • 是否只是关闭了整个会话而不是分离会话

鼠标、复制、滚动体验不顺

tmux 默认更偏键盘流。可以:

  • 开启 set -g mouse on
  • 使用终端自身复制能力
  • 配合现代终端(Windows Terminal、iTerm2)改善滚动体验

会话太多,记不住

建议把会话名按项目或机器命名,例如:

  • web-prod
  • blog-dev
  • db-maint

延伸阅读

参考链接

阅读建议
  • - 先读标题和摘要,再结合目录决定从哪个章节开始精读。
  • - 看到具体命令、配置或步骤时,尽量在自己的环境里同步验证。
  • - 如果你只是快速查资料,可先看目录和相关文档,再决定是否深入全文。
适合谁看
  • - 希望把零散经验整理成长期可复用工作流的人
  • - 想先建立认知,再决定是否深入实践的人
  • - 希望阅读时顺手建立自己的操作清单或收藏体系的人
执行前检查
  • - 先浏览标题、摘要和目录,带着问题阅读会更高效
  • - 顺手记录真正对你有用的命令、链接和注意事项,避免重复搜索
  • - 如果页面里提到相关文档,尽量一起打开对照,效果通常更完整
同类内容
← 上一篇SSL 证书与 HTTPS