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 #顺时针旋转当前窗体的面板