当前位置: 首页 > news >正文

linux 命令 tmux 用法详解

一、tmux 解决的痛点(screen命令一样可以解决,但是tmux功能更强大)

痛点一:大数据传输的漫长一夜

相信做过 Linux 服务运维的同学,都用 scp 进行过服务器间的大文件网络传输。一般这需要很长的时间,这期间,如果工作电脑出现断网或者断电的情况,则会导致远程连接工具无法与服务器通信,从而使得它所控制的数据传输也因此中断。

情景再现:

localhost:~ roc$ ls -hl
total 36419584
-rw-------  1 roc  staff    17G  1 20 11:06 win7.vdilocalhost:~ roc$ scp -P 22000 win7.vdi roc@roclinux.cn:/home/roc
win7.vdi                                                                              0% 7296KB 800.3KB/s 6:19:05

一个 17GB 的大文件,刚刚开始传输,预估耗时 6 小时 19 分钟,谁能保证中间不出现关机和断电的情况呢。

有些同学说可以用 nohup 来解决啊,是的,这是一个办法,可是使用 nohup 的问题在于如果同时传输的任务众多,则最后你自己可能都分不清哪个任务对应哪个传输了,何况 nohup 还会留下 nohup.out 这么一个临时文件在那里。

还有同学说,即使中断了,也可以断点续传啊。可惜的是,scp 并不支持断点续传。如果改用 rsync 倒是可以,可惜 rsync 参数用起来很是复杂,谁能保证每位运维工程师都能熟练掌握那么多复杂的参数呢?这个时候,请试一试 tmux 吧!


痛点二:正在编译却被拉去开会

和大文件数据传输情况类似,一些大型的开发项目的代码编译过程,往往也需要很长的时间,短则几分钟,长则一通宵。对于一通宵的编译来说,这要是中间出现断网断电,那就相当悲剧了。整个项目进展就又要向后推迟至少一天。这个时候,我们向你推荐 tmux!

痛点三:多个窗口切换到晕

作为运维工程师,一定有过在众多窗口间切换,查看各种服务器上的信息和状态的情况,这个时候,如果没有一款好用的窗口管理软件,过不了多久,你就会晕头转向了。就像图 2 所示的这种情况。

痛点四:一屏显示多窗口之殇

有时候为了进行多文件内容对比,如果没有一款很好用的分屏管理工具,那么我们只好创建多个终端,然后手动调整它们的大小和位置,如图 3 所示。

二、tmux 命令安装、配置及窗口元素介绍

1. 命令安装

$ sudo apt-get install tmux

打开tmux 运行该命令会新建一个窗口为0,此时窗格就是窗口的默认会话,会话名默认为0,也可以自定义会话名字,这个后面会说到。

$ tmux

按下Ctrl+d或者显式输入exit命令,就可以退出 Tmux 窗口

2. 配置

首先,如果你有一个已有的 tmux 配置文件,请对其进行备份。tmux 的配置文件是 ~/.tmux.conf
特别是要配置鼠标操作,这部分很重要不然记不住切换的一些命令

//18.04配置
#below reset tmux prefix command key
set -g prefix C-x
unbind C-b
bind C-x send-prefix
#set swap pane key
bind-key k select-pane -U
bind-key j select-pane -D
bind-key h select-pane -L
bind-key l select-pane -R
set-option -g mouse on

tmux命令窗口鼠标滚轮滚动出现^[[A^[[A^[[A^[[A^[[A^[[A^,所以需要添加:

set-option -g mouse on

在14.04上会出现鼠标不能选取窗口或则滚轮滚动窗口,故将:

set-option -g mouse on

替换为

setw -g mode-mouse on
set -g mouse-select-pane on
set -g mouse-resize-pane on
set -g mouse-select-window on

执行:

tmux source-file ~ .tmux.conf

重新加载当前的Tmux配置,使配置生效。

为了使自身的快捷键和其他软件的快捷键互不干扰,Tmux 提供了一个快捷键前缀。当想要使用快捷键时,需要先按下快捷键前缀,然后再按下快捷键。Tmux 所使用的快捷键前缀默认是组合键 Ctrl-b(同时按下 Ctrl 键和 b 键)。例如,假如你想通过快捷键列出当前 Tmux 中的会话(对应的快捷键是 s),那么你只需要做以下几步:

• 按下组合键 Ctrl-b (Tmux 快捷键前缀)
• 放开组合键 Ctrl-b
• 按下 s 键

3. 窗口元素介绍

三、常用操作

1.  会话操作

tmux new -s <session-name>              新建会话
tmux detach                            分离会话
tmux ls                                查看当前所有的Tmux会话
tmux a -t 0                            使用会话编号
tmux a -t <session-name>               使用会话名称
tmux kill-session -t 0                 使用编号
tmux kill-session -t <session-name>     使用会话名称
tmux switch -t 0                       使用会话编号
tmux switch -t <session-name>          使用会话名称
tmux rename-session -t 0 <new-name>     重命名会话

session 总结

session 在 tmux 操作当中非常重要,希望你可以熟练的使用以上操作:

新建 session -> 离开 session -> 查看 session 列表 -> 进入 session -> 关闭 session -> 不同 session 之间的切换 -> 重命名 session。

2. 窗格操作

Ctrl+b %                     划分左右两个窗格
Ctrl+b "                     划分上下两个窗格
Ctrl+b <arrow key>           光标切换到其他窗格
Ctrl+b ;                     光标切换到上一个窗格
Ctrl+b o                     光标切换到下一个窗格
Ctrl+b {                     当前窗格与上一个窗格交换位置
Ctrl+b }                     当前窗格与下一个窗格交换位置
Ctrl+b Ctrl+o                所有窗格向前移动一个位置,第一个窗格变成最后一个窗格
Ctrl+b Alt+o                 所有窗格向后移动一个位置,最后一个窗格变成第一个窗格
Ctrl+b x                     关闭当前窗格
Ctrl+b !                     将当前窗格拆分为一个独立窗口
Ctrl+b z                     当前窗格全屏显示,再使用一次会变回原来大小
Ctrl+b Ctrl+<arrow key>      按箭头方向调整窗格大小
Ctrl+b q                     显示窗格编号
ctrl+b :selectp -t 0         跳转到编号为0的窗格

3. 窗口操作

tmux new-window-n <window-name>                 新建窗口
tmux select-window -t <window-number>           切换窗口
tmux select-window -t <window-name>             切换到指定名称的窗口
tmux rename-window <new-name>                   重命名窗口

4. 其他命令

tmux list-keys                   列出所有快捷键,及其对应的 Tmux 命令
tmux list-commands               列出所有Tmux命令及其参数
tmux info                        列出当前所有Tmux会话的信息
kill-server                    关闭所有会话

相关文章:

  • JVM实战-掌握分派方法规则
  • MyBatis 四大核心组件之 StatementHandler 源码解析
  • STM32——继电器
  • Photoshop Circular Text
  • 鸿蒙应用开发(二)环境搭建
  • Linux gtest单元测试
  • 前端组件库开发
  • 模型 心流
  • 【华为数据之道学习笔记】3-4主数据治理
  • 本项目基于Spring boot的AMQP模块,整合流行的开源消息队列中间件rabbitMQ,实现一个向rabbitMQ
  • 使用Rust 构建C 组件
  • 汽车网络安全--关于UN R155认证的思考
  • 视频封面提取:精准截图,如何从指定时长中提取某一帧图片
  • qt5图形视频框架
  • Minio保姆级教程
  • ES6指北【2】—— 箭头函数
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • C语言笔记(第一章:C语言编程)
  • JavaScript中的对象个人分享
  • jquery ajax学习笔记
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • PermissionScope Swift4 兼容问题
  • Python学习笔记 字符串拼接
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • unity如何实现一个固定宽度的orthagraphic相机
  • 初识 beanstalkd
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 码农张的Bug人生 - 初来乍到
  • 前端js -- this指向总结。
  • 区块链技术特点之去中心化特性
  • 山寨一个 Promise
  • 我看到的前端
  • 小试R空间处理新库sf
  • 【干货分享】dos命令大全
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • elasticsearch-head插件安装
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • 浅谈sql中的in与not in,exists与not exists的区别
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • (2015)JS ES6 必知的十个 特性
  • (8)STL算法之替换
  • (C++17) optional的使用
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (一)Neo4j下载安装以及初次使用
  • (转)我也是一只IT小小鸟
  • ***详解账号泄露:全球约1亿用户已泄露
  • *2 echo、printf、mkdir命令的应用
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .naturalWidth 和naturalHeight属性,