tmux 终端复用

文摘   2024-11-17 13:05   湖北  



一、基础概念

1.1 什么是tmux?

tmux(terminal multiplexer)是一个终端复用器,允许用户在单个终端窗口中运行和管理多个终端会话。它的核心价值在于:

  • 会话持久化:

    即使终端关闭,程序依然在后台运行

  • 多窗口管理:

    在单个终端中管理多个工作区

  • 窗格分割:

    灵活地分割终端窗口

  • 会话共享:

    支持多人协作同一会话


1.2 核心架构

tmux采用三层架构设计:

  • 会话(Session):

    最顶层单位,可包含多个窗口

  • 窗口(Window):

    类似浏览器的标签页,每个会话可有多个窗口

  • 窗格(Pane):

    窗口内的分割区域,每个窗格是一个独立终端

二、安装配置

2.1 安装tmux

# Ubuntu/Debian
sudo apt-get install tmux

# CentOS/RHEL
sudo yum install tmux

# macOS
brew install tmux

2.2 基础配置

创建配置文件:~/.tmux.conf

# 基础配置示例
# 修改前缀键为Ctrl+a
set -g prefix C-a
unbind C-b
bind C-a send-prefix

# 开启鼠标支持
set -g mouse on

# 窗口编号从1开始
set -g base-index 1

# 设置状态栏
set -g status-bg black
set -g status-fg white

三、基础操作指南

3.1 会话管理

# 创建新会话
tmux new-session -s dev # 创建名为"dev"的会话
tmux new-session # 创建默认编号的会话

# 列出所有会话
tmux list-sessions

# 接入会话
tmux attach-session -t dev # 接入名为"dev"的会话
tmux attach-session # 接入最近的会话

# 分离当前会话
# 在tmux中使用快捷键:Ctrl+b d

# 关闭会话
tmux kill-session -t dev # 关闭指定会话
tmux kill-server # 关闭所有会话

3.2 窗口操作

在tmux会话中使用以下快捷键(先按Ctrl+b):

c    # 创建新窗口
, # 重命名当前窗口
n # 切换到下一个窗口
p # 切换到上一个窗口
w # 列出所有窗口
& # 关闭当前窗口
0-9 # 切换到指定编号的窗口

3.3 窗格操作

在tmux会话中使用以下快捷键(先按Ctrl+b):

%    # 垂直分割窗格
" # 水平分割窗格
o # 切换到下一个窗格
; # 切换到上一个窗格
x # 关闭当前窗格
空格 # 切换窗格布局

四、实战应用场景

4.1 开发环境配置

# 创建开发环境会话
tmux new-session -s development

# 分割窗口用于编辑器和终端
# 在tmux中按Ctrl+b %进行垂直分割
# 左侧运行编辑器
vim .

# 在右侧窗格运行服务器
npm start

# 创建新窗口用于Git操作
# 按Ctrl+b c创建新窗口
git status

4.2 服务器监控

# 创建监控会话
tmux new-session -s monitoring

# 分割窗口监控不同指标
# 上方窗格:系统负载
top

# 下方窗格:日志监控
tail -f /var/log/syslog

# 新窗口:网络监控
htop

4.3 数据处理

# 创建数据处理会话
tmux new-session -s data-processing

# 主窗口运行数据处理脚本
python process_data.py

# 新窗口监控资源使用
nvidia-smi # GPU监控

五、高级功能

5.1 会话共享

# 创建共享会话
tmux new-session -s shared

# 其他用户加入
tmux attach-session -t shared

5.2 会话操作

# 重命名会话
tmux rename-session -t old_name new_name

# 切换会话
tmux switch-client -t session_name

# 发送命令到指定会话
tmux send-keys -t session_name 'ls' C-m

5.3 窗口管理

# 移动窗口
tmux move-window -s src_session:2 -t dst_session:1

# 交换窗口位置
tmux swap-window -s 2 -t 1

六、常用命令速查表

6.1 会话命令

tmux new-session -s name    # 创建新会话
tmux list-sessions # 列出所有会话
tmux attach-session -t name # 连接会话
tmux kill-session -t name # 关闭会话
tmux rename-session -t old new # 重命名会话

6.2 窗口命令

tmux new-window -n name    # 创建新窗口
tmux list-windows # 列出所有窗口
tmux select-window -t :0 # 选择窗口
tmux rename-window name # 重命名窗口

6.3 窗格命令

tmux split-window -h      # 水平分割
tmux split-window -v # 垂直分割
tmux select-pane -t 0 # 选择窗格
tmux resize-pane -D 10 # 调整窗格大小

七、进阶配置示例

7.1 状态栏配置

# ~/.tmux.conf
# 自定义状态栏
set -g status-interval 1
set -g status-justify centre
set -g status-left-length 20
set -g status-right-length 140
set -g status-left '#[fg=green]#H #[fg=black]• #[fg=green,bright]#(uname -r | cut -c 1-6)#[default]'
set -g status-right '#[fg=green,bg=default,bright]#(tmux-mem-cpu-load) #[fg=red,dim,bg=default]#(uptime | cut -f 4-5 -d " " | cut -f 1 -d ",") #[fg=white,bg=default]%a%l:%M:%S %p#[default] #[fg=blue]%Y-%m-%d'

7.2 快捷键配置

# ~/.tmux.conf
# 自定义快捷键
bind-key C-a last-window
bind-key | split-window -h
bind-key - split-window -v
bind-key h select-pane -L
bind-key j select-pane -D
bind-key k select-pane -U
bind-key l select-pane -R

关注更多技术内容,欢迎关注我的公众号!



字节笔记本
专注于科技领域的分享,AIGC,全栈开发,产品运营
 最新文章