终端复用工具tmux的使用

tmux的做用在于终端复用。
1. 在server上启动一个bash。并在里面执行tmux
2. 经过ssh远程登陆server,执行tmux attach,就会切换到server上的那个bash中,接下来的操做都是在bash中了
3. 此时可以打开不少其它的窗体,这样在远程就可以像在本地同样同一时候使用多个同样的bashshell

假设要发送命令。例如如下:
tmux send -t checkpoint ls ENTER
注:checkpoint是你已经用tmux建立好的session的名字(tmux new -s checkpoint)。ls是shell命令;加上ENTER才干在checkpoint这个session中执行ls命令。小程序


这样你就不用手动tmux attach到那个session中。再手动执行ls命令。这对使用脚本是有优势的。
假设这个session有多个窗体:
tmux send -t checkpoint:0 ‘mongoose -t 2’ ENTER
0表明第一个窗体。缓存

结合parallel-ssh就可以远程使用服务器的bash环境来执行命令。bash

这种场景是实用的。在一台server上用criu来对一个小程序进行checkpoint,需要criu和小程序都执行在bash中,而不是直接在ssh中,不然checkpoint获得的img文件就会包括与ssh终端相关联的信息(session id)。这样就不能在还有一台server上进行restore了,也就是实现不了migration。而假设都在bash中。就不会再有与ssh有关的信息了,在还有一台机器上就可以restore。服务器

tmux快捷键
<下面转载自http://my.oschina.net/cshell/blog/135261>
tmux在会话中使用大量的快捷键来控制多个窗体、多个会话等。markdown

Ctrl+b  #激活控制台;此时下面按键生效   
系统操做   
    ?   #列出所有快捷键。按q返回   
    d   #脱离当前会话;这样可以临时返回Shell界面,输入tmux attach可以又一次进入以前的会话   
    D   #选择要脱离的会话;在同一时候开启了多个会话时使用   
    Ctrl+z  #挂起当前会话   
    r   #强制重绘未脱离的会话   
    s   #选择并切换会话。在同一时候开启了多个会话时使用   
    :   #进入命令行模式。此时可以输入支持的命令,好比kill-server可以关闭服务器   
    [   #进入复制模式;此时的操做与vi/emacs一样,按q/Esc退出   
    ~   #列出提示信息缓存;当中包括了以前tmux返回的各类提示信息   
窗体操做   
    c   #建立新窗体   
    &   #关闭当前窗体   
    数字键 #切换至指定窗体   
    p   #切换至上一窗体   
    n   #切换至下一窗体   
    l   #在先后两个窗体间互相切换   
    w   #经过窗体列表切换窗体   
    ,   #重命名当前窗体;这样便于识别   
    .   #改动当前窗体编号;至关于窗体又一次排序   
    f   #在所有窗体中查找指定文本   
面板操做   
    ”   #将当前面板平分为上下两块   
    %   #将当前面板平分为左右两块   
    x   #关闭当前面板   
    !   #将当前面板置于新窗体;即新建一个窗体。当中仅包括当前面板   
    Ctrl+方向键    #以1个单元格为单位移动边缘以调整当前面板大小   
    Alt+方向键 #以5个单元格为单位移动边缘以调整当前面板大小   
    Space   #在预置的面板布局中循环切换;依次包括even-horizontal、even-vertical、main-horizontal、main-vertical、tiled   
    q   #显示面板编号   
    o   #在当前窗体中选择下一面板   
    方向键 #移动光标以选择面板   
    {   #向前置换当前面板   
    }   #向后置换当前面板   
    Alt+o   #逆时针旋转当前窗体的面板   
    Ctrl+o  #顺时针旋转当前窗体的面板
相关文章
相关标签/搜索