tmux
tmux 是一个终端复用工具,用于实现终端和session之间的解耦。
什么是终端?
shell 提供了用户与操作系统进行交互的接口。用户通过终端来输入命令并查看命令的输出。
历史上的终端是包含键盘和显示器的硬件设备,我们如今使用的终端是软件实现的终端模拟器。


电传打字机,teletype,简称就是 tty。 😃 get 到了吗?
用户通过 login 命令登录主机时,在完成身份凭证的校验后,login 会使用 /etc/password
文件中指定的 shell 程序为用户创建一个初始 session。
为什么要终端复用?
一般情况下,一个终端对应一个 session。
当你需要一边编辑文件,一边执行命令时,这种情况就会显得很麻烦。因为你需要再开启一个终端,再 login 连接主机。
或者当你需要在服务器上跑一个长时间的程序时,到达时间限制时,session 会断开,运行的程序作为 session 的子进程也会终止。
终端复用工具可以在单个终端窗口中同时运行多个终端会话, 或从终端分离和重新连接会话。具体功能如下:
- tmux允许用户创建和管理多个会话,每个会话可以包含多个窗口和窗格,用户可以在不同会话之间切换。
- 可以将终端窗口分割成多个窗格。这对于同时运行多个命令或程序很有用。
- tmux可以在断开连接或关闭终端时保存当前会话的状态,用户可以在重新连接后恢复之前的会话。
安装
brew install tmux
基本概念
- session 会话:一个服务器可以包含多个会话
- window 窗口:一个会话可以包含多个窗口
- pane 面板:一个窗口可以包含多个面板
基础指令
参考 👉 link
插件
插件列表 👉 list
插件管理器
tpm tmux plugin manager
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
📄 tmux.conf
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
run '~/.tmux/plugins/tpm/tpm'
重启 tmux 环境
tmux source ~/.tmux.conf
保存工作区
有时候服务器还是需要重启的,重启之后所有 session 都会丢失,开机后还得重新建立 session ,window 和 pane。
使用 tmux-resurrect ,可以一键保存工作区。
📄 tmux.conf
set -g @plugin 'tmux-plugins/tmux-resurrect'
⌨️ 快捷键
- 保存
prefix + Ctrl-s
- 恢复
prefix + Ctrl-r
References
[1] Shall We Code?, Unix 终端系统(TTY)是如何工作的
[2] tmux-plugins, list
[3] JAIME’S GUIDE TO TMUX: THE MOST AWESOME TOOL YOU DIDN’T KNOW YOU NEEDED
[4] 深耕AI, 命令行界面 (CLI)、终端 (Terminal)、Shell、TTY,傻傻分不清楚?
[5] 神秘通信男, macOS Tmux安装及配置(复制粘贴,保存工作区)
[6] 阮一峰, Tmux 使用教程