1. 命令简介
tmux 是一个优秀的终端复用器(Terminal Multiplexer)。它允许用户在一个终端窗口中创建、访问和控制多个独立的终端会话(会话)、窗口和窗格。其核心价值在于,即使网络连接中断或关闭本地终端,运行在 tmux 会话中的进程也会继续在后台执行,用户可以随时重新连接(attach)到这些会话,恢复工作现场。
主要特点:
- 会话持久化:服务器端运行,不受客户端连接断开的影响。
- 多窗口与窗格:支持水平、垂直分割屏幕,高效管理多个终端任务。
- 灵活的配置:可通过配置文件(~/.tmux.conf)高度自定义快捷键、状态栏等。
- 协作功能:支持多个用户同时连接到同一个会话,进行结对编程或演示。
2. 语法格式
基本语法:
plaintext
tmux [command] [flags] tmux [flags] [command [args]]常用形式:
plaintext
tmux tmux new -s session_name tmux attach -t session_name tmux ls参数说明:
- command:指定要执行的子命令,如 new(新建会话)、attach(连接会话)、ls(列出会话)等。如果不提供任何命令,tmux 默认行为是 new-session。
- flags:全局选项或命令选项,用于修改命令行为。
- args:传递给特定命令的参数。
3. 常用选项及说明
全局选项(启动 tmux 时使用)
表格
| 选项 | 简写 | 说明 |
|---|---|---|
| -L socket-name | — | 指定使用的 tmux 服务器套接字名称。允许多个独立的 tmux 服务器实例。 |
| -f file | — | 指定替代的配置文件(默认为~/.tmux.conf)。 |
| -2 | — | 强制 tmux 假设终端支持 256 色。 |
| -u | — | 告诉 tmux 终端支持 UTF-8。 |
| -V | — | 显示 tmux 版本信息。 |
常用子命令
表格
| 命令 | 简写 | 说明 |
|---|---|---|
| new-session | new | 创建一个新的 tmux 会话。 |
| attach-session | attach, a | 连接到一个已存在的、处于脱离(detached)状态的会话。 |
| list-sessions | ls | 列出所有 tmux 会话。 |
| kill-session | — | 杀死指定的会话。 |
| kill-server | — | 杀死 tmux 服务器及其所有会话。 |
| rename-session | — | 重命名当前或指定的会话。 |
| switch-client | switchc | 切换已连接的客户端到另一个会话。 |
new-session 常用选项
表格
| 选项 | 简写 | 说明 |
|---|---|---|
| -s session-name | — | 为新会话指定一个名称。 |
| -n window-name | — | 为初始窗口指定一个名称。 |
| -d | — | 不自动连接(attach)到新会话,在后台创建。 |
| -c start-directory | — | 设置会话中窗口的起始工作目录。 |
attach-session 常用选项
表格
| 选项 | 简写 | 说明 |
|---|---|---|
| -t target-session | — | 指定要连接的目标会话名称或编号。 |
4. 示例用法
4.1 基础会话管理
启动一个新的匿名会话:
plaintext
tmux启动一个命名会话:
plaintext
tmux new -s mywork在后台启动一个会话(不自动连接):
plaintext
tmux new -s daemon_session -d列出所有会话:
plaintext
tmux ls # 或 tmux list-sessions输出示例:
plaintext
0: 1 windows (created Tue May 14 10:00:00 2024) mywork: 2 windows (created Tue May 14 09:30:00 2024)连接到指定会话:
plaintext
tmux attach -t mywork # 简写 tmux a -t mywork从会话中脱离(返回原 Shell):
在 tmux 会话中,按下默认前缀键 Ctrl+b,然后按 d。
重命名当前会话:
在 tmux 会话中,按下 Ctrl+b,然后按 $,输入新名称后回车。 或在命令行执行:tmux rename-session -t old_name new_name
结束一个会话:
plaintext
tmux kill-session -t session_name4.2 在脚本中使用
创建一个后台会话并运行命令:
plaintext
# 创建一个名为‘monitor’的后台会话,并在其中运行 top 命令 tmux new-session -d -s monitor 'top' # 稍后可以连接查看 tmux attach -t monitor在指定目录启动会话:
plaintext
tmux new-session -s project -c ~/projects/myapp5. 注意事项
- 前缀键(Prefix Key):tmux 的所有快捷键都需要先按一个前缀键(默认为 Ctrl+b),松开后再按功能键。这是为了避免与终端或应用程序本身的快捷键冲突。
- 配置生效:修改~/.tmux.conf 配置文件后,需要重启 tmux 服务器(tmux kill-server)或在会话中按 Ctrl+b 然后输入 :source-file ~/.tmux.conf 来重新加载配置。
- 嵌套使用:尽量避免在 tmux 会话中再启动另一个 tmux(嵌套)。虽然技术上可行,但会导致快捷键冲突和管理混乱。通常使用创建新窗口或窗格来替代。
- 会话恢复:即使关闭了终端或 SSH 连接,tmux 服务器及其会话仍在远程主机上运行。重新登录后,使用 tmux attach 即可恢复工作。
- 滚动和复制:
- 要滚动查看历史输出,进入复制 / 滚动模式:按下前缀键(默认为 Ctrl+b),然后按 [ 键。在此模式下,可以使用箭头键、Page Up/Page Down 滚动,按 q 退出。
- 复制文本:进入复制模式后,使用方向键或鼠标(如果启用)选择文本,然后按 Enter 复制到缓冲区。粘贴时,按下前缀键后按 ] 键。
获取更多Linux学习资料请关注“阿成学长工具包”,对话框中输入2647获取