tmux入门

        先理解下 tmux 的几个元素。tmux 的主要元素分为三层

  • Session 一组窗口的集合,通常用来概括同一个任务。session 可以有自己的名字便于任务之间的切换。
  • Window 单个可见窗口。Windows 有自己的编号,也可以认为和 ITerm2 中的 Tab 类似。
  • Pane 窗格,被划分成小块的窗口,类似于 Vim 中 C-w +v 后的效果。

下面是三个元素在 tmux 中的具体展现     

      tmux 能帮我们解决什么问题呢

凡是互联网行业的从业者,无论是做运维的同学,还是做开发的同学,一般都是在自己的工作电脑上安装远程连接工具(如 iTerm、putty、XShell、SecureCRT 等),远程登录到公司服务器上,进行具体的操作,而其中一些操作的耗时会很长。

在这期间,一旦我们的远程连接工具所在的工作电脑出现断网或断电的情况,那么很多耗时较长的操作就会因此中断,这是所有运维、开发同学都很头疼的一个问题。下面,我们就先给大家列出一些典型的痛点。

痛点一:大数据传输的漫长一夜
相信做过 Linux 服务运维的同学,都用 scp 进行过服务器间的大文件网络传输。一般这需要很长的时间,这期间,如果工作电脑出现断网或者断电的情况,则会导致远程连接工具无法与服务器通信,从而使得它所控制的数据传输也因此中断。

痛点二:正在编译却被拉去开会
和大文件数据传输情况类似,一些大型的开发项目的代码编译过程,往往也需要很长的时间,短则几分钟,长则一通宵。对于一通宵的编译来说,这要是中间出现断网断电,那就相当悲剧了。整个项目进展就又要向后推迟至少一天。这个时候,我们向你推荐 tmux!

痛点三:多个窗口切换到晕
作为运维工程师,一定有过在众多窗口间切换,查看各种服务器上的信息和状态的情况,这个时候,如果没有一款好用的窗口管理软件,过不了多久,你就会晕头转向了。

痛点四:一屏显示多窗口之殇
有时候为了进行多文件内容对比,如果没有一款很好用的分屏管理工具,那么我们只好创建多个终端,然后手动调整它们的大小和位置,

其实并不需要这么麻烦,tmux 可以帮助我们轻松分屏!

安装tmux

如果你的服务器的系统是 redhat、centos 或 fedora,那么安装会很简单:

[root@roclinux ~]# yum install tmux


tmux 依赖于 libevent 库和 ncurses 库,所以如果你的系统中原本没有这两个库的话,yum 会在安装时自动一并安装上。

如果你的服务器的系统是 ubuntu,那么安装也很简单:

[root@roclinux ~]# apt-get install tmux


如果你的服务器的系统是 OS X Server,仍然是一条命令搞定:

$ brew install tmux


brew 是苹果系统中常用的包管理工具,如果你的 OS X Server 提示你没有 brew 命令的话,则要事先安装这个包管理工具:

$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/ install/master/install)"

什么,你的系统没有 ruby?好吧。请自行百度,先老老实实地安装 ruby 吧。

tmux 入门四板斧

1.启动 tmux
首先,我们使用远程登录工具,登录到远程服务器上,然后执行下面的命令:

[root@roclinux ~]# tmux new -s roclinux


-s是 session 的缩写,顾名思义,我们启动了一个全新的 tmux 会话(tmux session),并且把这个会话起名叫作 roclinux。这时,映入大家眼帘的就是 tmux 环境了,如图 4 所示。


图4(点此查看原图

tmux 环境和之前的环境没有什么不同,因此所有的操作与原来一样就好了。

2.再创建一个新的窗口
在创建会话的同时,tmux 会在会话中创建一个窗口(tmux window),就是图 4 中的 0:bash。

好了,我们试着再创建一个窗口:

  • 第一步:按 Ctrl+B 组合键,然后松开。
  • 第二步:再单独按一下 c 键。

看!最底部是不是出现了一个 1:bash,如图 5 所示。


图5(点此查看原图

这说明,我们在 tmux session 中又创建了一个窗口。

细心的同学可能会提出一个问题,为什么刚才星号(*)是在 0:bash 后面,而现在却到了 1:bash 后面呢?

这是个好问题,星号(*)在这里表示的是“当前处于活跃状态的窗口”,也就是哪个窗口现在处于可操作状态,星号(*)就在哪个窗口的后面。这回知道了吧。

3.在窗口间切换
既然,我们在 roclinux 这个 session 中已经有了两个窗口,那么如果想在两个窗口间进行切换,应该怎么操作呢?

很简单,假如我们要切换到 0:bash 这个窗口,步骤如下:

  • 第一步:按 Ctrl-B 组合键,然后松开。
  • 第二步:按数字 0 键。


看,我们刚才说的星号(*)是不是已经悄悄移动到 0:bash 的后面啦。同理,在按下 Ctrl+B 组合键后,按相应数字键,就可以切换到相应的窗口了。就是这么简单!

4.退出会话,还能再回来
现在,我们切换到 0:bash,运行一个命令:

[root@roclinux ~]# watch -n 2 free


这个命令会每隔 2 秒钟更新一次内存使用状态,如果不输入 Ctrl+C,则永远不会退出。假如这时候你要带着办公电脑去开会,你的电脑要断网,又不想中断服务器上正在执行的 watch 命令,怎么办呢?哈哈,tmux 正好可以派上用场,方法是这样的:

  • 第一步:输入组合键 Ctrl+B,然后松开。
  • 第二步:输入字母 d。

看,tmux 环境消失了!眼前只有一行提示 [detached]:

[root@roclinux ~]# tmux new -s roclinux
[detached]

这表示,我们已经切断了办公电脑和刚才那个 tmux 之间的桥梁。现在如果你要外出,可以放心地关闭你的电脑了。

当你回到家后,打开电脑,连接到你的那台远程服务器,然后执行一个神奇的命令:
[root@roclinux ~]# tmux ls
roclinux: 2 windows (created Fri Jan 22 16:30:13 2016) [130x36]
[root@roclinux ~]# tmux a (回到关闭前的窗口,加上-t roclinux回到指定的窗口)

看,我们又回到了刚才的状态,那个查看内存使用状态的 watch 命令,在那里乖乖地运行着。这就是 tmux 的神奇之处,它可以让远端服务器的命令,脱离用户自己的电脑来执行,还可以随时召唤回来,继续进行操作和查看。

小技巧:

  • 分割窗口(" %)

水平分割(ctrl+b, ")和垂直分割(ctrl+b, %)

  • 面板切换(o 或方向键)

通常可以使用方向键来切换当前面板:   ctrl+b, 方向键
但手指离开了主键盘,总归不方便。如果不想离开主键盘,可以用 o 来做同样的事情: ctrl+b, o

  • 全屏/恢复面板窗口(z)

用 z(zoom)来切换:  ctrl+b, z

mac使用快速小结:

  • brew install tmux    #安装tmux
  • tmux attach   #可以当启动tmux使用- -.
  • tmux new-session -s rails  #创建rails 会话
  • tmux new-session -s rails -d   #在后台创建rails
  • tmux list-sessions / tmux ls   #列出所有正在运行的会话
  • tmux a -t rails #进入rails 会话
  • tmux kill-session -t rails   #关闭rails 会话
  • tmux kill-server   #关闭tmux服务,所有的会话将被关闭
  • tmux 的快捷键,常见的操作:
    Ctrl B  d  #隐藏会话
    Ctrl B  c   #新开一个窗口
    Ctrl B   &   #退出当前窗口
    Ctrl B  ,  #重命名窗口
    Ctrl B   数字     #切换到第几个窗口
    Ctrl B   n     #切换到下个窗口
    Ctrl B  p     #切换到上个窗口
    Ctrl B   l       #切换到最后一个窗口
    Ctrl B    w    #以菜单的方式显示和选择窗口
    Ctrl B  ”       #横向分割窗口
    Ctrl B  %       #纵向分割窗口
    Ctrl B   o      #跳到下一个分割窗口
    Ctrl B   上下左右    #跳到指定方向的分割窗口
    Ctrl B    x    #关闭当前分割窗口
    Ctrl B   !    #关闭所有分割窗口
    C Ctrl-方向键   #调整分割窗口大小
    Ctrl B   ?  显示快捷键帮助
    Ctrl B   t    显示时钟
    Ctrl B  [     #进入拷贝模式,可以使用上下左右键或者触摸板来翻页(fn+上下键快速翻页),Ctrl + C 退出
    Ctrl B  ]      #粘贴
    Ctrl B space   #开始复制(拷贝模式)

补:

与terminator对比

安装: apt/yum install terminator

使用:

//第一部份:关于在同一个标签内的操作
Alt+Up                          //移动到上面的终端
Alt+Down                        //移动到下面的终端
Alt+Left                        //移动到左边的终端
Alt+Right                       //移动到右边的终端
Ctrl+Shift+O                    //水平分割终端
Ctrl+Shift+E                    //垂直分割终端
Ctrl+Shift+Right                //在垂直分割的终端中将分割条向右移动
Ctrl+Shift+Left                 //在垂直分割的终端中将分割条向左移动
Ctrl+Shift+Up                   //在水平分割的终端中将分割条向上移动
Ctrl+Shift+Down                 //在水平分割的终端中将分割条向下移动
Ctrl+Shift+S                    //隐藏/显示滚动条
Ctrl+Shift+F                    //搜索
Ctrl+Shift+C                    //复制选中的内容到剪贴板
Ctrl+Shift+V                    //粘贴剪贴板的内容到此处
Ctrl+Shift+W                    //关闭当前终端
Ctrl+Shift+Q                    //退出当前窗口,当前窗口的所有终端都将被关闭
Ctrl+Shift+X                    //最大化显示当前终端
Ctrl+Shift+Z                    //最大化显示当前终端并使字体放大
Ctrl+Shift+N or Ctrl+Tab        //移动到下一个终端
Ctrl+Shift+P or Ctrl+Shift+Tab  //Crtl+Shift+Tab 移动到之前的一个终端
 
//第二部份:有关各个标签之间的操作
F11                             //全屏开关
Ctrl+Shift+T                    //打开一个新的标签
Ctrl+PageDown                   //移动到下一个标签
Ctrl+PageUp                     //移动到上一个标签
Ctrl+Shift+PageDown             //将当前标签与其后一个标签交换位置
Ctrl+Shift+PageUp               //将当前标签与其前一个标签交换位置
Ctrl+Plus (+)                   //增大字体
Ctrl+Minus (-)                  //减小字体
Ctrl+Zero (0)                   //恢复字体到原始大小
Ctrl+Shift+R                    //重置终端状态
Ctrl+Shift+G                    //重置终端状态并clear屏幕
Super+g                         //绑定所有的终端,以便向一个输入能够输入到所有的终端
Super+Shift+G                   //解除绑定
Super+t                         //绑定当前标签的所有终端,向一个终端输入的内容会自动输入到其他终端
Super+Shift+T                   //解除绑定
Ctrl+Shift+I                    //打开一个窗口,新窗口与原来的窗口使用同一个进程
Super+i                         //打开一个新窗口,新窗口与原来的窗口使用不同的进程

区别:

Tmux位于Terminator和screen之间,结合了易用性,仅基于普通终端。

以下是tmux优于终结者的优点:

  • 可移植性 – tmux适用于所有能够处理普通旧终端的系统。

  • 脚本性 – tmux可以编写脚本,因此设置窗口和窗格只需要一两次击键。

  • Server-client体系结构 – tmux可用于在用户之间共享会话。

  • 调整和选项 – tmux和Terminator都很容易获得,但它是tmux允许更进一步,并提供广泛的配置hacks.1

参考链接:tmux基本操作 - Guanglin - 博客园

                 tmux命令_Linux tmux命令:一个窗口操作多个会话

                 Linux 下的分屏利器-tmux安装、原理及使用_weixin_30421525的博客-CSDN博客

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值