终端恢复软件tmux的使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了终端恢复软件tmux的使用相关的知识,希望对你有一定的参考价值。

参考技术A tmux 是两个单词的缩写,即“Terminal MultipleXer”,意思是“终端复用器,它可以启动一系列终端会话。

我们使用命令行时,打开一个终端窗口,,会话开始,执行某些命令如npm run dev,关闭此终端窗口,会话结束,npm run dev服务会话随之被关闭。有时我们希望我们运行的服务如npm run dev 或者一些cd命令等,被保留,而不是关闭窗口再打开后,重新手动执行。tmux的主要用途就在于此。

我们在日常工作中,经常会遇到断网关机的的情况,一种方法我们可以用nohup将任务挂载在后台,另一种方法可以使用tmux进行会话的恢复。

软件使用:

恢复之前的会话:

查看最近任务状态:

参考链接:
tmux命令_Linux tmux命令:一个窗口操作多个会话 (biancheng.net)

tmux 多终端登陆软件,安装配置使用详解


                tmux 多终端登陆软件,安装配置使用详解

在日常工作中,总是感觉用 CRT 连接Linux一个窗口不够用,再开新的窗口又比较麻烦,在网上查找可以打开多个终端登录软件,最后我找到了很强大而且使用广泛的tmux多终端管理器。

tmux是一个优秀的终端复用软件,类似GNU Screen,使用它最直观的好处就是,通过一个终端登录远程主机并运行tmux后,在其中可以开启多个控制台而无需再使用更多的SSH会话来连接这台远程主机;其功能远不止于此。

 

下面详细介绍tmux软件的 1.6 、1.8 编译安装和 centos 5.X(32位、64位)、centos 6X 32位、64位) rpm包安装部署以及简单实用方法介绍;

 

安装

这里只详细说明在Centos5.x 和centos 6.x 下如何安装和使用tmux的。

 

一:下载tmux:

下面有各种版本的下载软件包连接,根据需要下载,为了方便我选择rpm包。

 

wget   http://sourceforge.net/projects/tmux/files/tmux/tmux-1.6/tmux-1.6.tar.gz/download

wget http://jaist.dl.sourceforge.net/project/tmux/tmux/tmux-1.8/tmux-1.8.tar.gz

wget ftp://ftp.muug.mb.ca/mirror/fedora/epel/5/x86_64/tmux-1.4-3.el5.1.x86_64.rpm

wget ftp://rpmfind.net/linux/dag/redhat/el5/en/x86_64/dag/RPMS/tmux-1.2-1.el5.rf.x86_64.rpm

wget ftp://rpmfind.net/linux/dag/redhat/el5/en/i386/dag/RPMS/tmux-1.2-1.el5.rf.i386.rpm

wget ftp://rpmfind.net/linux/dag/redhat/el6/en/x86_64/dag/RPMS/tmux-1.6-1.el6.rf.x86_64.rpm

 

二:编译安装:

2.1:编译安装;

2.1.1 : 1.6 版本安装

 

tar zxvf  tmux-1.6.tar.gz

cd tmux-1.6

./configure

make;make install

 

2.1.2: 1.8版本编译安装

 

编译安装:

mkdir -p /usr/local/tmux

mkdir -p /tmp/libevent

 

#安装依赖补丁包步骤如下;

wget https://github.com/downloads/libevent/libevent/libevent-2.0.20-stable.tar.gz  

tar xvzf libevent-2.0.20-stable.tar.gz  

./configure --prefix=/tmp/libevent

make

make install

 

tmux 1.8 下载安装步骤如下;

wget   http://jaist.dl.sourceforge.net/project/tmux/tmux/tmux-1.8/tmux-1.8.tar.gz

tar -xvf tmux-1.8.tar.gz

cd tmux-1.8

CFLAGS="-I/tmp/libevent/include" LDFLAGS="-L/tmp/libevent/lib" ./configure --prefix=/usr/local/tmux

make

make install

ln -s /usr/local/tmux/bin/tmux /usr/bin/

 

 

 

2.1.3 :centos 5x 64位系统安装

 

Linux sambaserver 2.6.18-308.16.1.el5 #1 SMP Tue Oct 2 22:01:43 EDT 2012 x86_64 x86_64 x86_64 GNU/Linux

more /etc/redhat-release

CentOS release 5.8 (Final)

 

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/tmux-1.5-1.el6.x86_64.rpm

 

[root@sambaserver workspace]# rpm -ivh tmux-1.4-3.el5.1.x86_64.rpm

warning: tmux-1.4-3.el5.1.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 217521f6

Preparing...     ########################################### [100%]

   1:tmux       ########################################### [100%]

 

2.1.4 :Centos 6 32位系统 安装

 

 uname -a

Linux Cacti 2.6.32-220.el6.i686 #1 SMP Tue Dec 6 16:15:40 GMT 2011 i686 i686 i386 GNU/Linux

more /etc/redhat-release

CentOS release 6.2 (Final)

 

wget http://apt.sw.be/redhat/el6/en/i386/rpmforge/RPMS/tmux-1.6-1.el6.rf.i686.rpm

[root@Cacti workspace]# rpm -ivh tmux-1.6-1.el6.rf.i686.rpm

warning: tmux-1.6-1.el6.rf.i686.rpm: Header V3 DSA/SHA1 Signature, key ID 6b8d79e6: NOKEY

Preparing...       ########################################### [100%]

   1:tmux        ########################################### [100%]

 

2.1.5:Centos 6X 32位系统 安装

 

uname -a

Linux hkvps 2.6.32-279.11.1.el6.i686 #1 SMP Tue Oct 16 14:40:53 UTC 2012 i686 i686 i386 GNU/Linux

more /etc/redhat-release

CentOS release 6.2 (Final)

 

wget http://apt.sw.be/redhat/el6/en/i386/rpmforge/RPMS/tmux-1.6-1.el6.rf.i686.rpm

 

rpm -ivh tmux-1.6-1.el6.rf.i686.rpm

warning: tmux-1.6-1.el6.rf.i686.rpm: Header V3 DSA/SHA1 Signature, key ID 6b8d79e6: NOKEY

Preparing...   ########################################### [100%]

   1:tmux      ########################################### [100%]

 

 三:实用简介

 

3.1、启动tmux

安装完成后输入命令tmux即可打开软件,界面十分简单,类似一个下方带有状态栏的终端控制台;但根据tmux的定义,在开启了tmux服务器后,会首先创建一个会话,而这个会话则会首先创建一个窗口,其中仅包含一个面板;也就是说,这里看到的所谓终端控制台应该称作tmux的一个面板,虽然其使用方法与终端控制台完全相同。

 

tmux使用C/S模型构建,主要包括以下单元模块:

       一个tmux命令执行后启动一个tmux服务

       一个tmux服务可以拥有多个session,一个session可以看作是tmux管理下的伪终端的一个集合

       一个session可能会有多个window与之关联,每个window都是一个伪终端,会占据整个屏幕

       一个window可以被分割成多个pane

 

多个pane的编号规则,以3个pane为例:

0

1 | 2

 

3.1.1:命令介绍

 

tmux new -s health   #启动一个tmux  session 命名为 health

 

tmux attach-session -t health    #进入已启动的health session里面

 tmux  rename-session -t 0 health     #将已经启动session 0 改名为 health

tmux  kill-session -t health        #kill 命名为  health  的回话

tmux ls                                                             #查看已经启动session

 

3.1.2:tmux快捷键

 

tmux在会话中使用大量的快捷键来控制多个窗口、多个会话等。

1.      Ctrl+b  #激活控制台;此时以下按键生效  

2.      系统操作  

3.          ?   #列出所有快捷键;按q返回  

4.          d   #脱离当前会话;这样可以暂时返回Shell界面,输入tmux attach能够重新进入之前的会话  

5.          D   #选择要脱离的会话;在同时开启了多个会话时使用  

6.          Ctrl+z  #挂起当前会话  

7.          r   #强制重绘未脱离的会话  

8.          s   #选择并切换会话;在同时开启了多个会话时使用  

9.          :   #进入命令行模式;此时可以输入支持的命令,例如kill-server可以关闭服务器  

10.       [   #进入复制模式;此时的操作与vi/emacs相同,按q/Esc退出  

11.       ~   #列出提示信息缓存;其中包含了之前tmux返回的各种提示信息  

12.   窗口操作  

13.       c   #创建新窗口  

14.       &   #关闭当前窗口  

15.       数字键 #切换至指定窗口  

16.       p   #切换至上一窗口  

17.       n   #切换至下一窗口  

18.       l   #在前后两个窗口间互相切换  

19.       w   #通过窗口列表切换窗口  

20.       ,   #重命名当前窗口;这样便于识别  

21.       .   #修改当前窗口编号;相当于窗口重新排序  

22.       f   #在所有窗口中查找指定文本  

23.   面板操作  

24.       ”   #将当前面板平分为上下两块  

25.       %   #将当前面板平分为左右两块  

26.       x   #关闭当前面板  

27.       !   #将当前面板置于新窗口;即新建一个窗口,其中仅包含当前面板  

28.       Ctrl+方向键    #以1个单元格为单位移动边缘以调整当前面板大小  

29.       Alt+方向键 #以5个单元格为单位移动边缘以调整当前面板大小  

30.     Space   #在预置的面板布局中循环切换;依次包括even-horizontal、even-vertical、main-horizontal、main-vertical、tiled  

31.       q   #显示面板编号  

32.       o   #在当前窗口中选择下一面板  

33.       方向键 #移动光标以选择面板  

34.          #向前置换当前面板  

35.          #向后置换当前面板  

36.       Alt+o   #逆时针旋转当前窗口的面板  

37.       Ctrl+o  #顺时针旋转当前窗口的面板 

 

3.1.3:配置文件

tmux配置文件在~/.tmux.conf和/etc/tmux.conf中,配置文件中可以修改默认绑定的快捷键

配置文件示例:

1.      #此类配置可以在命令行模式中输入show-options -g查询  

set-option -g base-index 1                        #窗口的初始序号;默认为0,这里设置为1  

set-option -g display-time 5000                   #提示信息的持续时间;设置足够的时间以避免看不清提示,单位为毫秒  

set-option -g repeat-time 1000                    #控制台激活后的持续时间;设置合适的时间以避免每次操作都要先激活控制台,单位为毫秒  

set-option -g status-keys vi                      #操作状态栏时的默认键盘布局;可以设置为vi或emacs  

set-option -g status-right "#(date +%H:%M )"    #状态栏右方的内容;这里的设置将得到类似23:59的显示  

set-option -g status-right-length 10              #状态栏右方的内容长度;建议把更多的空间留给状态栏左方(用于列出当前窗口)  

set-option -g status-utf8 on                      #开启状态栏的UTF-8支持  

 

#此类设置可以在命令行模式中输入show-window-options -g查询  

set-window-option -g mode-keys vi    #复制模式中的默认键盘布局;可以设置为vi或emacs  

set-window-option -g utf8 on         #开启窗口的UTF-8支持  

 

#将激活控制台的快捷键由Ctrl+b修改为Ctrl+a,Ctrl+a是Screen的快捷键

 

set-option -g prefix C-a  

unbind-key C-b  

bind-key C-a send-prefix  

 

#添加自定义快捷键  

bind-key z kill-session                     #按z结束当前会话;相当于进入命令行模式后输入kill-session  

bind-key h select-layout even-horizontal    #按h将当前面板布局切换为even-horizontal;相当于进入命令行模式后输入select-layout even-horizontal  

bind-key v select-layout even-vertical      #按v将当前面板布局切换为even-vertical;相当于进入命令行模式后输入select-layout even-vertical  

 


#鼠标支持

setw -g mouse-resize-pane on                #开启用鼠标拖动调节pane的大小(拖动位置是pane之间的分隔线)

setw -g mouse-select-pane on                #开启用鼠标点击pane来激活该pane

setw -g mouse-select-window on              #开启用鼠标点击来切换活动window(点击位置是状态栏的窗口名称)

setw -g mode-mouse on                       #开启window/pane里面的鼠标支持(也即可以用鼠标滚轮回滚显示窗口内容,此时还可以用鼠标选取文本)



四:安装报错排查

 

#报错 1

oops 出错

control.c: In function ‘control_callback’:

control.c:103: warning: implicit declaration of function ‘evbuffer_readln’

control.c:103: error: ‘EVBUFFER_EOL_LF’ undeclared (first use in this function)

control.c:103: error: (Each undeclared identifier is reported only once

control.c:103: error: for each function it appears in.)

make: *** [control.o] Error 1

 

解决:用下面的方式编译

CFLAGS="-I/tmp/libevent/include" LDFLAGS="-L/tmp/libevent/lib" ./configure --prefix=/usr/local/tmux

 

#报错2 t

mux: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory

 

解决:将库文件 copy 到 lib64

cp /tmp/libevent/lib/libevent-2.0.so.5 /usr/lib64/

 

五:tmux使用效果




 

 

以上是关于终端恢复软件tmux的使用的主要内容,如果未能解决你的问题,请参考以下文章

tmux用于恢复远程屏幕

tmux简单使用

tmux简单使用

tmux的使用

tmux

markdown 重启后保存并恢复tmux会话