tmux的使用

tmux的使用

时间: 2015-03-03 22:32

作者: lsgxeva

分类: 工作学习>>linux>>terminal

摘要: 介绍tmux的使用

标签: tmux terminal tool linux

提示: 文章均来自网络,版权为原作者所有,如有侵犯权益,请联络我们.

1: tmux的介绍

tmux是一个优秀的终端多路复用软件,类似GNU Screen,但来自于OpenBSD,采用BSD授权。使用它最直观的好处就是,通过一个终端登录远程主机并运行tmux后,在其中可以开启多个控制台而无需再“浪费”多余的终端来连接这台远程主机;当然其功能远不止于此。

tmux的架构图:

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

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

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

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

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

kill-window可以关闭当前窗口,kill-session可以结束当前会话,kill-server可以停止服务器.

$ tmux   # 运行 tmux -2 以256终端运行

$ C-b d  # 返回主 shell , tmux 依旧在后台运行,里面的命令也保持运行状态

$ tmux ls # 显示已有tmux会话(C-b s)

$ tmux attach-session -t 数字 # 选择tmux

$ tmux new-session -s session-name #建立会话

$ tmux new -s session -d #在后台建立会话

$ tmux kill-session -t session-name # 结束会话

一键启动远程主机上的 tmux

$ ssh -t [email protected] tmux

如果你之前在远程主机上已经开启了 tmux 的话,用以下命令。

$ ssh -t [email protected] tmux att

$ ssh -t [email protected] tmux attach-session -t 数字

除此之外,你可以结合第二条命令来绑定快捷键,这样我们只需一键就可以快速登录并开启 tmux 了。

为什么使用tmux:

tmux比screen有更多的功能,能够保持你的工作环境连续性。例如tmux解决如下的问题:

1)下班后,你需要断开ssh或关闭电脑,你的ssh连接将丢失;

2)在公司打开的ssh,在家里也需要访问;

2. tmux的安装

可以使用Ports安装tmux,位置在/usr/ports/sysutils/tmux/;tmux仅有一个依赖包libevent,位于/usr/ports/devel/libevent/。

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

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

server服务器。输入tmux命令时就开启了一个服务器。

session会话。一个服务器可以包含多个会话。

window窗口。一个会话可以包含多个窗口。

pane面板。一个窗口可以包含多个面板。

ubuntu系统下的安装

$ sudo aptitude install tmux

3. tmux的配置

tmux完全使用键盘控制窗口,实现窗口的切换,像是Chrome的方式管理shell,使用起来很方便。

tmux命令都具有一个前缀命令(PREFIX),默认的是CTRL+b,可以自己修改,改为CTRL+a。

tmux的系统级配置文件为/etc/tmux.conf,用户级配置文件为~/.tmux.conf。配置文件实际上就是tmux的命令集合,也就是说每行配置均可在进入命令行模式后输入生效。

下面是一个~/.tmux.conf的示例,其中包括了一些常用的配置:

[email protected]:work$ cat ~/.tmux.conf

########################################

#

# author   : lsgx <[email protected]>

# modified : 2014-11-12

#

#-- base settings --#

set -g default-terminal "screen-256color"  # 设置终端缺省的支持颜色为256色

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

set -g escape-time 0    # 等待时间的持续时间;设置越小越好

set -g history-limit 65535    # 历史记录条数的最大限制值

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

#set -g pane-base-index 1    # 面板的初始序号;默认为0,这里设置为1

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

#set -s quiet on

#setw -g xterm-keys on

#-- bindkeys --#

# prefix key (Ctrl+a)    # 将激活控制台的快捷键由Ctrl+b修改为Ctrl+a

set -g prefix ^a

unbind ^b

bind a send-prefix

# split window    # 窗口分割

unbind ‘"‘

bind - splitw -v # vertical split (prefix -)    # 上下分割窗口

unbind %

bind | splitw -h # horizontal split (prefix |)    # 左右分割窗口

# select pane    # 选择面板

bind k selectp -U # above (prefix k)    # 选择上面板

bind j selectp -D # below (prefix j)    # 选择下面板

bind h selectp -L # left (prefix h)    # 选择左面板

bind l selectp -R # right (prefix l)    # 选择右面板

# resize pane

bind -r ^k resizep -U 2 # upward (prefix Ctrl+k)    # 当前面板上移2

bind -r ^j resizep -D 2 # downward (prefix Ctrl+j)    # 当前面板下移2

bind -r ^h resizep -L 2 # to the left (prefix Ctrl+h)    # 当前面板左移2

bind -r ^l resizep -R 2 # to the right (prefix Ctrl+l)    # 当前面板右移2

# swap pane

bind ^u swapp -U # swap with the previous pane (prefix Ctrl+u)    # 与上面板交换

bind ^d swapp -D # swap with the next pane (prefix Ctrl+d)    # 与下面板交换

# create new session

bind C-c new-session    # 创建一个新的会话

# control sessions

bind z kill-session    # 结束一个会话

# find session

bind C-f command-prompt -p find-session ‘switch-client -t %%‘    # 查找会话

# clear both screen and history

#bind -n C-l send-keys C-l \; run ‘tmux clear-history‘    # 清空屏幕内容和历史记录

# reload config (prefix r)

bind r source ~/.tmux.conf \; display "Configuration reloaded!"    # 重新加载配置文件

# misc

bind e lastp  # select the last pane (prefix e)    # 选择最后一个面板

bind ^e last  # select the last window (prefix Ctrl+e)    # 选择最后一个窗口

bind q killp  # kill pane (prefix q)    # 关闭当前面板

bind ^q killw # kill window (prefix Ctrl+q)    # 关闭当前窗口

# app

bind ! splitw htop                                     # htop (prefix !)

bind m command-prompt "splitw ‘exec man %%‘"           # man (prefix m)

bind @ command-prompt "splitw ‘exec perldoc -t -f %%‘" # perl func (prefix @)

bind * command-prompt "splitw ‘exec perldoc -t -v %%‘" # perl var (prefix *)

bind % command-prompt "splitw ‘exec perldoc -t %%‘"    # perl doc (prefix %)

bind / command-prompt "splitw ‘exec ri %%‘"            # ruby doc (prefix /)

#-- statusbar --#

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

set -g status-interval 1    # 状态栏的分辨时间间隔

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

set -g visual-activity on    # 开启窗口操作的可视

set -g set-clipboard on    # 开启剪切板

set -g display-panes-time 800 # slightly longer pane indicators display time    # 稍长的窗格中显示的时间指标

set -g display-time 1000      # slightly longer status messages display time    # 稍长的状态消息的显示时间

set -g renumber-windows on    # renumber windows when a window is closed    # 关闭窗口后重新编号

setw -g automatic-rename on    # rename window to reflect current program    # 重命名窗口,以反映当前的程序

setw -g utf8 on    # 开启窗口的UTF-8支持

setw -g monitor-activity on    # 开启窗口活动监视

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

setw -g clock-mode-style 24 # 24 hour clock    # 24小时显示方式

#setw -g mode-mouse on    # 开启鼠标模式

# copy mode

bind Enter copy-mode # enter copy mode    # 按Enter进入复制模式

bind b list-buffers  # list paster buffers    # 复制缓冲区列表

bind p paste-buffer  # paste from the top pate buffer    # 粘贴最后复制的缓冲区内容

bind P choose-buffer # choose which buffer to paste from    # 选择粘贴缓冲区

# the following vi-copy bindings match my vim settings

# see https://github.com/gpakosz/.vim.git

bind -t vi-copy v begin-selection    # 复制模式下开始选取

bind -t vi-copy C-v rectangle-toggle    # 复制模式下矩形选取

bind -t vi-copy y copy-selection    # 复制模式下复制选取的内容

bind -t vi-copy Escape cancel    # 复制模式下退出复制模式

bind -t vi-copy H start-of-line    # 复制模式下开始行选取

bind -t vi-copy L end-of-line    # 复制模式下结束行选取

# mouse resize selcet

#setw -g mouse-resize-pane on    # 鼠标调整面板大小

#setw -g mouse-select-pane on    # 鼠标选择面板

#setw -g mouse-select-window on    # 鼠标选择窗口

# move x clipboard into tmux paste buffer

bind C-p run "tmux set-buffer \"$(xclip -o -sel clipbaord)\"; tmux paste-buffer"

# move tmux copy buffer into x clipboard

bind C-y run "tmux show-buffer | xclip -i -sel clipbaord"

#-- colorscheme --#

# see also: https://github.com/daethorian/conf-tmux/blob/master/colors/zenburn.conf

# modes

setw -g clock-mode-colour colour223

setw -g mode-attr bold

setw -g mode-fg colour223

setw -g mode-bg colour235

# panes

set -g pane-border-bg colour234

set -g pane-border-fg colour234

set -g pane-active-border-bg colour232

set -g pane-active-border-fg colour232

# statusbar

set -g status-justify centre

set -g status-bg colour235

set -g status-fg colour248

set -g status-attr dim

set -g status-left "#[fg=green,bright]Session: #S #[fg=yellow,bright]Window: #I #[fg=cyan,bright]Pane: #P"

set -g status-left-attr bright

set -g status-left-length 30

set -g status-right "#[fg=yellow,bright][ #[fg=cyan,bright]#W #[fg=yellow,bright]]#[default] #[fg=yellow,bright]- %Y.%m.%d #[fg=green,bright]%H:%M #[default]"

set -g status-right-attr bright

set-option -g status-right-length 30

setw -g window-status-current-fg colour223

setw -g window-status-current-bg colour237

setw -g window-status-current-attr bold

#setw -g window-status-current-format "#I:#W#F"

#setw -g window-status-alert-attr bold

#setw -g window-status-alert-fg colour255

#setw -g window-status-alert-bg colour160

# messages

set -g message-attr bold

set -g message-fg colour223

set -g message-bg colour235

#######################################

启动后的界面效果

4. tmux的使用

基本操作使用

$ tmux #运行tmux -2 以256色终端运行

$ C-a d # 返回主shell,tmux依旧在后台运行,里面的命令也保持运行状态

$ tmux new -s session-name  # 建立名字为session-name的会话

$ tmux new -s  session-name -d # 在后台建立名字为session-name的会话

$ tmux ls # 显示已有的tmux会话(C-a s)

$ tmux attach-session -t session-name # 连接已经存在的名为session-name的会话

$ tmux kill-session -t session-name # 结束已经存在的名为session-name的会话

*** 控制台-操作说明 ***

$  Ctrl+a  // 激活控制台

$

$  ** 系统操作

$      ?   // 列出所有快捷键;按q返回

$      d   // 脱离当前会话;

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

$      Ctrl+z  // 挂起当前会话

$      z // 结束当前会话

$      r   // 重新加载配置文件

$      s   // 选择并切换会话;在同时开启了多个会话时使用

$      :   // 进入命令行模式;

$            :new-session         // 创建新会话

$      Enter   // 进入复制模式;此时的操作与vi/emacs相同,按q/Esc退出   (必须先进入复制模式才可以滚屏)

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

$

$  ** 会话操作

$      (   preview session

$      )   next session

$      s   list session

$      $   rename seesion

$      Ctrl+c // 创建一个会话

$      c     // 创建一个窗口

$      z    // 结束一个会话

$      Ctrl+z  // 挂起一个会话

$      Ctrl+f  // 查找一个会话

$      f  // 查找一个窗口

$      [0~9]  // 跳到指定的窗口

$      e // 最后一个面板

$      Ctrl+e   // 最后一个窗口

$      q    // 关闭当前面板

$      Ctrl+q  // 关闭窗口

$

$

$  ** 窗口操作

$      c   // 创建新窗口

$      &   // 关闭当前窗口

$      [0-9] // 切换至指定窗口

$      w   // 通过窗口列表切换窗口

$      ,   // 重命名当前窗口;这样便于识别

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

$      i   // 显示tmux当前信息

$

$  ** 面板操作

$      -   // 将当前面板平分为上下两块|横向切割 --> 分割成面板

$      |   // 将当前面板平分为左右两块|竖向切割 --> 分割成面板

$      k   // 选择上面板

$      j    // 选择下面板

$      h   // 选择左面板

$      l   // 选择右面板

$      Ctrl+k    // 当前面板上移2

$      Ctrl+j    // 当前面板下移2

$      Ctrl+h    // 当前面板左移2

$      Ctrl+l    // 当前面板右移2

$      x   // 关闭当前面板

$      ;   // 切换到最后的pane

$      Space        // 在预置的面板布局中循环切换;依次包括:

$                       even-horizontal、

$                       even-vertical、

$                       main-horizontal、

$                       main-vertical、

$                       tiled

$      o   // 在当前窗口中选择下一面板

$      {   // 向前置换当前面板

$      }   // 向后置换当前面板

$      Ctrl+u)    // 与上面板交换

$      Ctrl+d)    // 与下面板交换

$      方向键   // 移动光标以选择面板

$      Alt+o    // 逆时针旋转当前窗口的面板

$      Ctrl+o   // 顺时针旋转当前窗口的面板

$

时间: 12-27

tmux的使用的相关文章

tmux安装

tmux是一个优秀的终端复用软件,类似GNU Screen,但来自于OpenBSD,採用BSD授权.使用它最直观的优点就是,通过一个终端登录远程主机并执行tmux后.在当中能够开启多个控制台而无需再"浪费"多余的终端来连接这台远程主机.(该段文字来自于百度文库) 1.安装ncurses-devel yum -y install ncurses-devel 2.安装libevent 经測试,在CentOS 7上能够直接通过yum来安装libevent,可是在CentOS6.5(其它平台未

Tmux Linux 分屏工具

刚进入IT行业做Linux运维,小白一枚.在公司发现有同事使用mac操作linux系统界面时,可以使用快捷键分屏,于是自己在网上找了一下linux相关的分屏工具. Tmux是一个键盘驱动的终端分屏工具,可以替代Linux下的screen.当然,如果是在Mac下使用的话,它的核心功能(例如window,分屏等)也是可以被iTerm2替代的,不过好在Tmux在unix操作系统中足够通用,用包管理工具(apt-get, brew等)即可安装,所以了解并熟练使用它,还是能为平时终端下的工作节省不少时间的

Way to tmux

1. tmux ls: 显示所有会话(OR: Ctrl-b s)2. tmux new -s session-name: 新建会话3. 可以简单地输入tmux a命令,这样可以接入第一个可用的会话:tmux a或者可以通过参数指定一个想接入的会话:tmux a -t session-name4. tmux detach: 断开会话(OR: Ctrl-b d)5. tmux kill-session -t session-name: 关闭会话提示: 关闭窗口时也可以使用类似的命令,只不过要把 ki

微软将Ubuntu Bash进行了升级支持了Tmux

近日,微软发布了Windows 10 build 14361的更新版本,在这个版本中,微软带来了几个重要的改进,其中我们最关注的是对 Bash on Ubuntu on Windows 的“巨大改进”,新的版本提供了对Tmux的支持. 新版本Bash on Windows 的 DrvFs 严格区分大小写.在 /mnt/c 中大小写不同的文件系统则认为是多个不同的文件,比如说linuxprobe.txt 和LINUXPROBE.TXT 就是两个不同的文件.虽然NTFS可以存储大小写不同的同名文件,

Linux tmux

一.简介 Tmux是一个用于终端复用的软件,它允许一个用户在一个终端窗口或远程终端会话中使用多个不同的终端会话.在同一个命令行接口处理多个程序,以及将程序从已经开始运行另外的程序的Unix shell中分离出来,是非常有用的.   二.安装 在 Debian 和 Ubuntu下安装 Tmux 的命令: sudo apt-get install tmux 在CentOS和 RHEL中,由于它不存在于官方的软件源中,所以需要添加 EPEL 库,而後进行安装,具体指令: rpm -ivh http:/

tmux 窗口自动变更名字

tmux 窗口自动变更名字的解决方案: 1. tmux.conf 里面更改 set-window-option -g automatic-rename off set-option -g allow-rename off  2. bashrc 里面更改: DISABLE_AUTO_TITLE=true

Linux tmux 安装 配置

一.简介 Tmux是一个用于终端复用的软件,它允许一个用户在一个终端窗口或远程终端会话中使用多个不同的终端会话.在同一个命令行接口处理多个程序,以及将程序从已经开始运行另外的程序的Unix shell中分离出来,是非常有用的. 二.安装 参考:http://www.linuxidc.com/Linux/2013-07/86776.htm 在 Debian 和 Ubuntu下安装 Tmux 的命令: sudo apt-get install tmux 在CentOS和 RHEL中,由于它不存在于官

实现关闭ssh继续运行程序---tmux

问题1:为什么ssh一关闭,程序就不再运行了 元凶:SIGHUP 信号 让我们来看看为什么关掉窗口/断开连接会使得正在运行的程序死掉. 在Linux/Unix中,有这样几个概念: 进程组(process group):一个或多个进程的集合,每一个进程组有唯一一个进程组ID,即进程组长进程的ID. 会话期(session):一个或多个进程组的集合,有唯一一个会话期首进程(session leader).会话期ID为首进程的ID. 会话期可以有一个单独的控制终端(controlling termin

CentOS下Tmux安装和使用

Tmux介绍: Tmux是BSD实现的Screen替代品,相对于Screen,它更加先进:支持屏幕切分,而且具备丰富的命令行参数,使其可以灵活.动态的进行各种布局和操作.它可以做到一条命令就启动起来(强大的配置),左侧是终端,右侧是Vim,下面来一个gdb——总之它就是一个灵活的IDE,任仍你配置. 效果如下图: 安装: 接下来,我们讲讲如何安装tmux. 环境:CentOS CentOS的软件安装工具不是apt-get  是yum 安装tmux之前需要先安装一些支持的组件: yum insta

Linux终端多窗口工具tmux 的编译安装

tmux (全名是Terminal Multiplexer)是一个优秀的终端复用软件,类似GNU Screen,但来自OpenBSD,采用BSD授权.使用它最直观的好处就是,通过一个终端登录远程主机并运行tmux后,在其中可以开启多个控制台而无需再"浪费"多余的终端来连接这台远程主机:当然其功能远不止于此.与screen相比的优点:可以横向和纵向分割窗口,且窗格可以自由移动和调整大小.可在多个缓冲区进行复制和粘贴,支持跨窗口搜索:非正常断线后不需重新detach:-- 有人说--与tm