终端复用神器 - Tmux

Tmux 的优点:任意分屏、保存工作、可以让代码在后台运行、可以远程批量操作的shell脚本。

在使用SSH或telnet远程连接服务器时,可能都遇到为一些长时间运行的任务而头疼,比如系统备份、ftp 传输等等。通常情况下我们都是为每一个这样的任务开一个远程终端窗口,因为他们执行的时间太长了。必须等待它执行完毕,在此期间可不能关掉窗口或者断开连接,否则这个任务就会被杀掉,一切半途而废了。例如,由于实验室的网实在是不稳定,所以经常遇到跑了好几个小时的代码快要出结果的时候却断网了,导致与服务器的连接中断,代码也就自然而然的停止运行了(至于其中的具体原因可以自行百度)。这点真的让人很苦恼。同时,当你的ssh在执行一个代码时,你如果不新建一个连接,你在这个连接中是无法干其他的事情的,这一点也很不好。于是,考虑可以把代码放到服务器后台运行。

使用tmux打开一个终端窗口,可以在窗口里执行一个长时间运行的交互式命令操作,令其一直在后台跑着,并且在按键ctrl-b-d后,可以无感知的退出窗口,而退出后窗口不会关闭,即窗口里执行的交互命令也不会结束。

tmux的厉害之处还在与它支持批量的管理你的任务,在创建窗口的同时,可以同时在窗口终端里连续执行两个或多个命令,而不必每个窗口只执行一个任务的命令了。

tmux中的最重要的三个概念:会话,窗口,pane的使用方法涵盖了它的基本框架,足以应付大多数工作。另外tmux还有一些高级用法,例如可以个性化的配置其组合键(官方默认的ctrl+b组合键按起来不太方便可以修改,UI设置,鼠标支持,复制粘贴等)。

安装

 brew install tmux  #mac
 sudo apt install tmux  #Debian/Ubuntu
 sudo yum install tmux  #CentOS

美化

 cd
 git clone https://github.com/gpakosz/.tmux.git
 ln -s -f .tmux/.tmux.conf
 cp .tmux/.tmux.conf.local .

关于字体最好使用 nerd fonts 这里推荐一款我一直在使用的 nerd font

Droid Sans Mono Nerd Font Complete Mono.otf

同时修改 ~/.tmux.conf.local153-156 行,删除前面的#

 tmux_conf_theme_left_separator_main='\uE0B0'  # /!\ you don't need to install Powerline
 tmux_conf_theme_left_separator_sub='\uE0B1'   #   you only need fonts patched with
 tmux_conf_theme_right_separator_main='\uE0B2' #   Powerline symbols or the standalone
 tmux_conf_theme_right_separator_sub='\uE0B3'  #   PowerlineSymbols.otf font, see README.md

使用

tmux 采用 C/S 模型构建,输入 tmux 命令就相当于开启了一个服务器,此时默认将新建一个会话,然后会话中默认新建一个窗口,窗口中默认新建一个面板。会话、窗口、面板之间的联系如下: 一个 tmux session(会话)可以包含多个 window(窗口),窗口默认充满会话界面,因此这些窗口中可以运行相关性不大的任务。 一个 window 又可以包含多个 pane(面板),窗口下的面板,都处于同一界面下,这些面板适合运行相关性高的任务,以便同时观察到它们的运行情况。

Tmux 会话命令(常用的,敲重点了)

 #新建会话
 tmux # 新建一个会话
 tmux new -s docker # 新建一个会话为docker
 ​
 #断开当前会话
 tmux detach # 断开当前会话,会话在后台服务器上运行
 ​
 #进入之前的会话
 tmux a # 默认进入第一个会话
 tmux a -t docker # 进入到名称为docker的会话
 ​
 #关闭会话
 tmux kill-session -t docker # 关闭docker这个会话
 tmux kill-server # 关闭tmux服务器,所有的tmux会话都将关闭
 ​
 #查看所有会话
 tmux list-session # 查看所有会话
 tmux ls # 查看所有会话,提倡使用简写形式

切换会话也可以使用 ctrl b + w/s 查看会话列表,按上下键 (⬆︎⬇︎) 或者鼠标滚轮,可选中目标会话,按左右键(⬅︎➜)可收起或展开会话的窗口,选中目标会话或窗口后,按回车键即可完成切换。

Tmux的其它快捷指令

 # 常用指令
 tmux new -s "name" #创建session
 tmux attach -t     #重新连接session
 ctrl b %   #横向分屏
 ctrl b "   #纵向分屏
 ctrl b o   #选择窗格
 ctrl d     #关闭
 ctrl b d   #隐藏所有session
 ctrl b s/w #选择session
 ctrl b m   #打开/关闭鼠标控制
 ctrl b [   #面板鼠标滚动回查,按 q 退出
 sudo fdisk -l  #查看硬盘分区情况
 ls -l /dev/sd*  #查看硬盘

系统指令

前缀指令描述
Ctrl+b?显示快捷键帮助文档
Ctrl+bd断开当前会话
Ctrl+bD选择要断开的会话
Ctrl+bCtrl+z挂起当前会话
Ctrl+br强制重载当前会话
Ctrl+bs显示会话列表用于选择并切换
Ctrl+b:进入命令行模式,此时可直接输入 ls 等命令
Ctrl+b[进入复制模式,按 q 退出
Ctrl+b]粘贴复制模式中复制的文本
Ctrl+b~列出提示信息缓存

窗口(window)指令

前缀指令描述
Ctrl+bc新建窗口
Ctrl+b&关闭当前窗口(关闭前需输入 y or n 确认)
Ctrl+b0~9切换到指定窗口
Ctrl+bp切换到上一窗口
Ctrl+bn切换到下一窗口
Ctrl+bw打开窗口列表,用于且切换窗口
Ctrl+b,重命名当前窗口
Ctrl+b.修改当前窗口编号(适用于窗口重新排序)
Ctrl+bf快速定位到窗口(输入关键字匹配窗口名称

面板(pane)指令

前缀指令描述
Ctrl+b"当前面板上下一分为二,下侧新建面板
Ctrl+b%当前面板左右一分为二,右侧新建面板
Ctrl+bx关闭当前面板(关闭前需输入 y or n 确认)
Ctrl+bz最大化当前面板,再重复一次按键后恢复正常(v1.8 版本新增)
Ctrl+b!将当前面板移动到新的窗口打开(原窗口中存在两个及以上面板有效)
Ctrl+b;切换到最后一次使用的面板
Ctrl+bq显示面板编号,在编号消失前输入对应的数字可切换到相应的面板
Ctrl+b{向前置换当前面板
Ctrl+b}向后置换当前面板
Ctrl+bCtrl+o顺时针旋转当前窗口中的所有面板
Ctrl+b方向键 移动光标切换面板
Ctrl+bo选择下一面板
Ctrl+b空格键 在自带的面板布局中循环切换
Ctrl+bAlt + 方向键以 5 个单元格为单位调整当前面板边缘
Ctrl+bCtrl + 方向键以 1 个单元格为单位调整当前面板边缘(Mac 下被系统快捷键覆盖)
Ctrl+bt显示时钟
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值