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 #順時針旋轉當前窗體的面板