Linux/UNIX 下终端复用利器 tmux
简介
tmux 是一个终端复用器类自由软件,功能类似 GNU Screen,但使用 BSD 许可发布。用户可以通过 tmux 在一个终端内管理多个分离的会话,窗口及面板,对于同时使用多个命令行,或多个任务时非常方便。 --- 维基百科
基本概念
tmux 的三个重要概念:会话(session),窗口(window),窗格(pane)。
一个会话(session) 可以有多个窗口(window),一个窗口(window)又可以有多个窗格(pane)。
安装
# macOS
$ brew install tmux
# centos
$ yum install tmux
前缀键
tmux 的快捷键都要通过前缀键才可以使用。默认的前缀键是Ctrl+b,即先按下Ctrl+b进入快捷键模式,再按快捷键才会生效。
举例:分离会话的快捷键是Ctrl+b d。用法是,在 tmux 窗口下,先按下Ctrl+b,再按下d,就会分离会话,进入正常命令行模式。
会话管理
tmux:创建一个无名称的会话tmux new -s daodaotest:创建名为 daodaotest 的会话tmux new -s daodaotest -d:在后台创建名为 daodaotest 的会话tmux detach:分离会话tmux ls:显示会话列表tmux a:接入最后一次会话tmux a -t daodaotest:接入 daodaotest 会话tmux kill-session:关闭最后一次会话tmux kill-session -t 0:使用会话编号杀死会话tmux kill-session -t daodaotest:使用会话名称杀死会话tmux kill-session -a -t daodaotest:关闭除 daodaotest 外的所有会话tmux kill-server:关闭所有会话tmux switch -t 0:使用会话编号切换会话tmux switch -t daodaotest:使用会话名称切换会话tmux rename-session -t daodaotest daodaotest2:重命名会话名称exit或Ctrl+d:退出会话
会话快捷键
Ctrl+b s:列出会话,可进行切换Ctrl+b d:分离当前会话Ctrl+b $:重命名当前会话
窗口管理
tmux new-window:新建一个新窗口tmux new-window -n daodaotest:新建一个 daodaotest 名称的新窗口tmux select-window -t 0~9:切换到指定编号的窗口tmux select-window -t daodaotest:切换到 daodaotest 的窗口tmux rename-window daodaotest2:重命名当前窗口为:daodaotest2
窗口快捷键
Ctrl+b c:新建一个新窗口Ctrl+b ,:重命名当前窗口Ctrl+b w:列出所有窗口,可进行切换Ctrl+b n:进入下一个窗口Ctrl+b p:进入上一个窗口Ctrl+b l:进入之前操作的窗口Ctrl+b 0~9:选择编号0~9对应的窗口Ctrl+b .:修改当前窗口索引编号Ctrl+b ':切换至指定编号(可大于9)的窗口Ctrl+b f:根据显示的内容搜索窗格Ctrl+b &:关闭当前窗口
窗格管理
tmux sp -h:水平方向创建窗格tmux sp:垂直方向创建窗格tmux select-pane -U:光标切换到上方窗格tmux select-pane -D:光标切换到下方窗格tmux select-pane -L:光标切换到左边窗格tmux select-pane -R:光标切换到右边窗格tmux swap-pane -U:当前窗格上移tmux swap-pane -D:当前窗格下移
窗格快捷键
Ctrl+b %:水平方向创建窗格Ctrl+b ":垂直方向创建窗格Ctrl+b Up|Down|Left|Right:根据箭头方向切换窗格Ctrl+b q:显示窗格编号Ctrl+b o:顺时针切换窗格Ctrl+b }:与下一个窗格交换位置Ctrl+b {:与上一个窗格交换位置Ctrl+b x:关闭当前窗格Ctrl+b space(空格键):重新排列当前窗口下的所有窗格Ctrl+b !:将当前窗格置于新窗口Ctrl+b Ctrl+o:逆时针旋转当前窗口的窗格Ctrl+b t:在当前窗格显示时间Ctrl+b z:放大当前窗格(再次按下将还原)Ctrl+b i:显示当前窗格信息
使用场景
后台运行程序
在做自动化部署脚本时,远程执行目标服务器 xStart.sh 脚本,来后台启动 java 应用。脚本如下:
# 启动应用
start() {
......
if [ "X$pid" = "X" ]; then
# 关闭之前终端
tmux kill-session -t $SYSTEM_NAME-$PORT
# 创建终端
tmux new -s $SYSTEM_NAME-$PORT -d
# 终端启动服务
tmux send -t $SYSTEM_NAME-$PORT "cd $PIDDIR;nohup java $JAVA_OPTS -jar $SYSTEM_NAME*.jar $SPRING_ACTIVE --server.port=$PORT $EXT_OPTS >/dev/null 2>&1 &" ENTER
else
echo "$SYSTEM_NAME is already running."
exit 1
fi
......
}
大量数据迁移
在迁移 maven 私服 nexus 时,nexus 数据大概有 13G 左右,在使用scp进行迁移,终端超时关闭后就会中断。操作命令如下:
# 创建 tmux 会话
$ tmux new -s nexus-scp
# 在 tmxu 会话中,执行 scp 命令
$ scp -R nexus@x.x.x.x:~/nexus .
# 分离会话,后台执行即可
$ Ctrl+b d
快速恢复工作现场
日常工作中,每天都要查询某些日志或者监控某些指标时,可以通过tmux保存现场,下次快速恢复工作现场,提高工作效率。
nginx 操作现场

Linux/UNIX 下终端复用利器 tmux的更多相关文章
- (转载)Linux终端复用神器-Tmux使用
Linux终端复用神器-Tmux使用 转载地址:https://blog.51cto.com/652465/2094738 Tmux是一个优秀的终端复用软件,类似GNU Screen,但来自于Open ...
- linux下远程管理利器-tmux
linux下远程管理利器-tmux 1.控制键 控制键就是tmux的主键.当你在tmux环境下按下这个键的时候,tmux就会把你后面输入的指令,解析成它内置的功能.tmux默认的控制键是 ...
- 终端复用工具-tmux
目录 终端复用工具--Tmux 一.为什么要用Tmux? 二.tmux是什么? 三.Tmux基本概念 四.Tmux使用规则 1.安装Tmux 2.基本使用 3.自定义配置文件 五.补充 1.tmux ...
- 10分钟 教你学会Linux/Unix下的vi文本编辑器
10分钟 教你学会Linux/Unix下的vi文本编辑器 vi编辑器是Unix/Linux系统管理员必须学会使用的编辑器.看了不少关于vi的资料,终于得到这个总结.不敢独享,和你们共享. 首先,记住v ...
- 【Linux】linux/unix下telnet提示Escape character is '^]'的意义
在linux/unix下使用telnet hostname port连接上主机后会提示Escape character is '^]' 这个提示的意思是按Ctrl + ] 会呼出telnet的命令行, ...
- linux/unix下telnet提示Escape character is '^]'的意义
在linux/unix下使用telnet hostname port连接上主机后会提示Escape character is '^]' 这个提示的意思是按Ctrl + ] 会呼出telnet的命令行, ...
- Linux终端复用神器-Tmux使用梳理
Tmux是一个优秀的终端复用软件,类似GNU Screen,但来自于OpenBSD,采用BSD授权.使用它最直观的好处就是,通过一个终端登录远程主机并运行tmux后,在其中可以开启多个控制台而无需再“ ...
- Linux终端复用工具 tmux
简介 Terminal Multiplexer (From WIKIPEDIA) - A terminal multiplexer is a software application that can ...
- 终端复用工具 tmux 基本操作教程
简介 在 Linux 操作环境下,终端操作是发挥 Linux 强大命令功能的重要途径,但在本地主机操作中,针对不同任务开启不同的终端,在使用时进行频繁的终端切换在某些场合下是一种使人分心和疲惫的操作, ...
随机推荐
- 1.Lambda表达式
1.Lambda表达式 语法糖 也叫作糖衣语法,增强了代码的可读性 避免了出错的机会 但是,这种语法对于语言的功能并没有增强 和Lambda一样的糖衣语法还有:(1)泛型 <>(2)自动装 ...
- 二维数组及Arrays工具类
1.二维数组 概念: 数组中的每一个元素类型都是一维数组 二维数组初始化方式: 静态初始化: 格式: 元素类型[][] 数组名 = new 元素类型[][]{{一维数组1},{一维数组2},{一维数组 ...
- redis相关命令及应用场景
Redis的应用场景 (1) 配合关系型数据库做高速缓存 l 高频次,热门访问的数据,降低数据库IO l 高频次,热门访问的数据,降低数据库IO (2) 由于其拥有 ...
- 关于MySQL 建表的一些建议
由于在生产环境下,我们对MySQL数据库的操作通常是通过命令行进行操作,因此,建议建表的时候也手写MySQL语句(不建议用图形界面建表). 1.添加注释的格式 在编写MySQL语句时,我们通常会被要求 ...
- BZOJ 压力 tarjan 点双联通分量+树上差分+圆方树
题意 如今,路由器和交换机构建起了互联网的骨架.处在互联网的骨干位置的核心路由器典型的要处理100Gbit/s的网络流量. 他们每天都生活在巨大的压力之下.小强建立了一个模型.这世界上有N个网络设备, ...
- 医学图像 | 使用深度学习实现乳腺癌分类(附python演练)
乳腺癌是全球第二常见的女性癌症.2012年,它占所有新癌症病例的12%,占所有女性癌症病例的25%. 当乳腺细胞生长失控时,乳腺癌就开始了.这些细胞通常形成一个肿瘤,通常可以在x光片上直接看到或感觉到 ...
- 旷视6号员工范浩强:高二开始实习,“兼职”读姚班,25岁在CVPR斩获第四个世界第一...
初来乍到,这个人说话容易让人觉得"狂". "我们将比赛结果提交上去,果不其然,是第一名的成绩."当他说出这句话的时候,表情没有一丝波澜,仿佛一切顺理成章. 他说 ...
- Python第七章-面向对象
面向对象编程基础 一.面向对象概念 1.1 什么是面向过程 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了. 生活中的的例子举例. 1.2 ...
- 如何利用python实现为每行添加行数编号
可能还有更好的方法,在这里我是这么写的,针对小文件可以,但是如果文件内容太多,这种方法感觉不太好 先把所有的数据读取出来,然后利用W覆盖写入模式打开文件进行写入 遍历枚举类型数据后,默认是从0开始,然 ...
- coding++:JS/jQuery获取兄弟姐妹等元素
jQuery获取: jQuery.parent(expr),找父亲节点,可以传入expr进行过滤,比如$("span").parent()或者$("span") ...