tmux的作用在于终端复用。
1. 在server上启动一个bash。并在里面执行tmux
2. 通过ssh远程登录server,执行tmux attach,就会切换到server上的那个bash中,接下来的操作都是在bash中了
3. 此时能够打开很多其它的窗体,这样在远程就能够像在本地一样同一时候使用多个一样的bash
假设要发送命令。例如以下:
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环境来执行命令。
这种场景是实用的。在一台server上用criu来对一个小程序进行checkpoint,须要criu和小程序都执行在bash中,而不是直接在ssh中,否则checkpoint得到的img文件就会包括与ssh终端相关联的信息(session id)。这样就不能在还有一台server上进行restore了,也就是实现不了migration。而假设都在bash中。就不会再有与ssh有关的信息了,在还有一台机器上就能够restore。
tmux快捷键
tmux在会话中使用大量的快捷键来控制多个窗体、多个会话等。
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 #顺时针旋转当前窗体的面板