終端複用工具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  #順時針旋轉當前窗體的面板
相關文章
相關標籤/搜索