简介
Tmux 是一个用于在终端窗口中运行多个终端会话的工具,即终端复用软件(terminal multiplexer)。在 Tmux 中可以根据不同的工作任务创建不同的会话,每个会话又可以创建多个窗口来完成不同的工作,每个窗口又可以分割成很多小窗口。这些功能都是非常实用的。
Tmux 的多窗口和窗口分割并不是它吸引的我原因,对于这一点我可以有另外一个终端工具代替,即 Terminator。使用 Tmux 最大的益处在于,远程 SSH 访问服务器进行工作时。即使非正常掉线,它能保存当前工作状态,并保证当前任务继续运行。这一点对于远程 SSH 工作的人来说是非常重要的。远程 ssh 工作时,Tmux 的多会话、多窗口、多面板的益处才充分体现了出来。使用 Tmux 就不必开启多个标签连接多个 ssh 了,所有工作在一个 ssh 连接上就搞定了,也不必担心突然掉线后工作丢失。
与 Tmux 类似的软件还有 screen、dvtm、splitvt、byobu 等。
会话, 窗口, 窗格
根据 Tmux 的定义,在开启了 Tmux 服务器后,会首先创建一个会话,而这个会话则会首先创建一个窗口,其中仅包含一个窗格;也就是说,这里看到的所谓终端控制台应该称作 Tmux 的一个窗格,虽然其使用方法与终端控制台完全相同。
Tmux 使用 C/S 模型构建,主要包括以下单元模块:
- server 服务器:输入 tmux 命令时就开启了一个服务器,服务器可以管理多个会话。
- session 会话:一个服务器可以包含多个会话,可以理解成是一个特定的终端组合,通常将同一任务下的工作放到一个会话中。
- window 窗口:一个会话可以包含多个窗口,一个窗口就相当于普通终端的一个标签,通常在不同的窗口中完成不同的工作。
- pane 窗格:一个窗口可以被分割成多个小的窗格。
安装
在 Mac OS 中安装:
$ brew install tmux
再ubuntu中安装:
sudo apt-get install tmux
或者下载源码编译安装:https://tmux.github.io/
基本使用
新建会话:
tmux new -s mysession
使用快捷键 prefix + d
可以暂时离开当前会话,如果要再次连接以前的某个会话,可以用如下命令:
tmux attach -t mysession
或者
tmux a -t mysession
要杀掉会话,可以用如下命令:
tmux kill-session -t mysession
常用命令
信息查询:
tmux list-keys
列出所有可以的快捷键和其运行的 tmux 命令
tmux list-commands
列出所有的 tmux 命令及其参数
tmux info
流出所有的 session, window, pane, 运行的进程号,等。
会话控制:
tmux new -s session_name
创建一个叫做 session_name 的 tmux session
tmux attach -t session_name
重新开启叫做 session_name 的 tmux session
tmux switch -t session_name
转换到叫做 session_name 的 tmux session
tmux list-sessions / tmux ls
列出现有的所有 session
tmux detach
离开当前开启的 session
tmux kill-server
关闭所有 session
窗口控制:
tmux new-window
创建一个新的 window
tmux list-windows
列出所有的 window
tmux select-window -t :0-9
根据索引转到该 window
tmux rename-window
重命名当前 window
窗格控制:
tmux split-window
将 window 垂直划分为两个 pane
tmux split-window -h
将 window 水平划分为两个 pane
tmux swap-pane -[UDLR]
在指定的方向交换 pane
tmux select-pane -[UDLR]
在指定的方向选择下一个 pane
常用快捷键
所有快捷键的使用都必须加上命令前缀(prefix), 默认是 Ctrl+b
。
基本操作
参考
- http://blog.kissdata.com/2014/07/29/tmux.html
- https://xpgeng.gitbooks.io/omooc2py/content/guide/Tmux-Guide.html
- http://wdxtub.com/2016/03/30/tmux-guide/
- http://kuanghy.github.io/2016/09/29/tmux