1.tmux简介
tmux是终端复用工具,类似的工具有screen,但tmux比screen的功能要强大许多,比如说tmux可以将窗口拆成多个pane,而screen不支持窗口拆分。
tmux是典型的C/S架构。当我们使用tmux new-session -s session-name时,就会在机器上运行一个tmux的进程(可以使用ps aux | grep tmux来查看),这个就是tmux的server,它管理了所有的session。而客户端就是我们用tmux attach-session detach到指定session后以及基于该session的一系列操作都是tmux客户端的范畴了。
tmux有如下几个元素:
(1)session
一组窗口的集合,通常用来概括同一个任务。session可以有自己的名字便于任务之间的切换。
(2)window
单个可见窗口。Windows有自己的编号,也可以认为和ITerm2中的Tab类似。
(3)pane
将window划分成小块的面板,类似于Vim中 C-w +v 后的效果。
2.使用tmux的好处
(1)复用终端
可以在一个terminal下打开多个终端,也可以在当前window进行各种split,即可以同时打开多个显示范围更小的终端。
(2)保持工作现场
在使用SSH的环境下,由于网络不稳定等原因,ssh断连从而导致工作现场的丢失。而tmux即使是终端退出,人能将会话保存在后台中。可以使用tmux再次attach到之前的会话,直接回到原来的工作环境,不但提高了工作 效率,还降低了风险,增加了安全性。
(3)后台执行继续执行未完成工作
例如我们使用scp工具向一台远程主机拷贝数据。当我们退出tmux session,并人为关闭终端(或者ssh客户端和tmux寄存的机器异常断连),scp任务将继续执行传输数据。screen能够达到同样的效果。这个功能相当于nohup后台执行耶!
3.tmux的安装
(1)在官网上http://tmux.github.io/上下载tmux的tarball,以及tmux依赖的libevent和ncurses的tarball。
(2)源码安装ncurses、libevent
(3)设置CFLAGS变量,形如:
CFLAGS="-I libevent安装目录/include" LDFLAGS="-L/usr/local/libevent安装目录/lib" ./configure --prefix=tmux安装目录 #eg: CFLAGS="-I/usr/pro/libevent2/include" LDFLAGS="-L/usr/pro/libevent2/lib"(4)源码安装tmux
(5)将libevent的动态库,cp到指定目录,操作如下:
#如果是32位linux sudo cp /usr/pro/libevent2/lib/libevent-2.0.so.5 /usr/lib #如果是64位linux sudo cp /usr/pro/libevent2/lib/libevent-2.0.so.5 /usr/lib64(6)将tmux的bin加入环境变量PATH中
#在/etc/profile中添加如下内容 export TMUX_HOME=tmux的安装目录 export PATH=$TMUX_HOME/bin:$PATH #然后用source执行/etc/profile文件 source /etc/profile
4.tmux的常用操作
tmux new-session -s session-name #创建名称为session-name的session。亦可简写成tmux new -s session-name tmux list-sessions #列出当前有哪些session,亦可简写成tmux ls tmux attach-session -t target-session #attach到名称为target-session的session上,亦可简写成tmux attach -t target-session tmux kill-session -t target-session #kill到名称为target-session的session tmux kill-session -a #kill掉所有的sessions tmux #如果直接执行tmux,后面不附带任何的参数,那么默认下带上了new-session命令,表示创建一个新的session,由于没有-t参数,新session的名字为数字
5.tmux工具内部的操作快捷键
在tmux中有一个前置操作,tmux默认的前置操作是CTRL+b(亦可以修改)。在tmux使用任何快捷按键时,都首先需要执行这个前置操作。tmux工具在收到前置操作命令时,才会知道接下来的操作是和tmux进行快捷键的操作交互。tmux的常用的快捷操作如下:
#基本的操作 prefix ? ->>列出所有快捷键;按q返回 #和session相关的操作 prefix d ->>离开当前会话,可暂时返回shell界面,输入tmux attach能够重新进入之前会话 prefix s ->>查看所有会话并可以进行会话的切换 prefix $ ->>重命名当前Session #和window相关的操作 prefix c ->>新建窗口 prefix & ->>关闭窗口 prefix w ->>显示当前session中所有window并可以进行窗口的切换 prefix 窗口号 ->>窗口切换 prefix space ->>切换到上一个活动的窗口 prefix , ->>重命名当前窗口 #和pane相关操作 prefix “ ->>将当前面板上下分屏 prefix % ->>将当前面板左右分屏 prefix x ->>关闭当前分屏 prefix 方向键 ->>移动光标选择对应面板 prefix o ->>切换到下一个panel prefix q ->>查看所有窗格的编号 prefix z ->>暂时把一个窗体放到最大,再次prefix z会还原(在tmux 1.8及以后版本中才支持)
tmux的配置文件是 ~/.tmux.conf,这个文件可能不存在,可以自己创建。我们可以在该配置文件中添加定制化的配置,比如将默认的前置操作Ctrl+b修改为其他的操作。
参考资料来源于:
http://unkeltao.com/blog/2014/04/29/intsall-tmux/
http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man1/tmux.1?query=tmux&sec=1