运维工具之tmux命令

tmux终端复用器的使用

1.tmux的概念

​ tmux,“Terminal MultipleXer”,意思是"终端复用器"。是一个可以让人们通过一个窗口操作多个会话的工具,对于经常操作Linux系统的运维人员来说,绝对是一款提高工作效率的利器。

2.tmux能帮助我们解决什么问题?

​ 凡是互联网行业的从业者,无论是做运维的同学,还是做开发的同学,一般都是在自己的工作电脑上安装远程连接工具(如 iTerm、putty、XShell、SecureCRT 等),远程登录到公司服务器上,进行具体的操作,而其中一些操作的耗时会很长。

​ 在这期间,一旦我们的远程连接工具所在的工作电脑出现断网或断电的情况,那么很多耗时较长的操作就会因此中断,这是所有运维、开发同学都很头疼的一个问题。下面,我们就先给大家列出一些典型的痛点。

痛点一:大数据传输的漫长一夜
相信做过 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 这么一个临时文件在那里。

扩展:nohup命令

nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。

nohup 命令,在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下,如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。

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

扩展:rsync命令

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

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

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

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

img

这个时候,tmux 可以帮到你!

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

img

其实并不需要这么麻烦,tmux 可以帮助我们轻松分屏!

3.tmux的安装

#centos,redhat,fedora
[root@localhost ~]# yum -y install tmux
#tmux 依赖于 libevent 库和 ncurses 库,所以如果你的系统中原本没有这两个库的话,yum 会在安装时自动一并安装上。# ubuntu
[root@localhost ~]# apt-get install tmux
# OS X Server
[root@localhost ~]# brew install tmux

4.tmux入门使用

4.1 启动tmux

[root@localhost ~]# tmux new -s roclinux

-s是session的缩写。顾名思义,我们启动了一个全新的tmux会话(tmux session),并且把这个会话起名叫做roclinux。

tmux环境和之前的环境没什么不同,因此所有的操作与原来一样

4.2 再创建一个新的窗口

# 在创建会话的同时,tmux会在会话中创建一个窗口(tmux window)
  • 第一步:按ctrl+S组合键,然后松开
  • 第二步:再单独按一下c键

最底部出现了一个1:root@localhost ,说明我们在tmux session 中又创建了一个窗口

细心的同学可能会提出一个问题,为什么刚才星号(*)是在 0:root@localhost 后面,而现在却到了 1:bash 后面呢?

这是个好问题,星号(*)在这里表示的是 “当前处于活跃状态的窗口” ,也就是哪个窗口现在处于可操作状态,星号(*)就在哪个窗口的后面。这回知道了吧。

4.3 在窗口间切换

既然,我们在 roclinux 这个 session 中已经有了两个窗口,那么如果想在两个窗口间进行切换,应该怎么操作呢?

很简单,假如我们要切换到 0:root@localhost 这个窗口,步骤如下:

  • 第一步:按 Ctrl-S 组合键,然后松开。
  • 第二步:按数字 0 键。

看,我们刚才说的星号(*)是不是已经悄悄移动到 0:bash 的后面啦。同理,在按下 Ctrl+B 组合键后,按相应数字键,就可以切换到相应的窗口了。就是这么简单!

4.4 退出会话,还能再回来

在0:root@localhost 这里执行一个循环命令

[root@localhost ~]# watch -n 2 free
# 该命令会每隔2秒钟更新一次内存信息

这个命令会每隔 2 秒钟更新一次内存使用状态,如果不输入 Ctrl+C,则永远不会退出。

假如这时候你要带着办公电脑去开会,你的电脑要断网,又不想中断服务器上正在执行的 watch 命令,怎么办呢?

哈哈,tmux 正好可以派上用场,方法是这样的:

  • 第一步:输入组合键 Ctrl+S,然后松开。
  • 第二步:输入字母 d

这表示,我们已经切断了办公电脑和刚才那个 tmux 之间的桥梁。现在如果你要外出,可以放心地关闭你的电脑了。

当你回到家后,打开电脑,连接到你的那台远程服务器,然后执行一个神奇的命令:

[root@roclinux ~]# tmux ls
roclinux: 2 windows (created Fri Jan 22 16:30:13 2016) [130x36]
[root@roclinux ~]# tmux attach -t roclinux

看,我们又回到了刚才的状态,那个查看内存使用状态的 watch 命令,在那里乖乖地运行着。这就是 tmux 的神奇之处,它可以让远端服务器的命令,脱离用户自己的电脑来执行,还可以随时召唤回来,继续进行操作和查看。

5.tmux常用指令及快捷键

# 查看有所有tmux会话
指  令:tmux ls
快捷键:Ctrl+s s# 列出所有窗口
快捷键:Ctrl+s w# 新建tmux窗口
指  令:tmux new -s <session-name># 重命名会话
指  令:tmux rename-session -t <old-name> <new-name>
快捷键:Ctrl+s $# 分离会话
指  令:tmux detach  或者使用  exit(关闭窗口) 
快捷键:Ctrl+s d# 重新连接会话
指  令:tmux attach -t <session-name>  或者使用 tmux at -t <session-name>#平铺当前窗格(个人很喜欢的快捷键,注意:平铺的是当前选中的窗格)
快捷键:Ctrl+s z (再次 Ctrl+b z 则恢复)# 杀死会话
指  令:tmux kill-session -t <session-name># 切换会话
指  令:tmux switch -t <session-name># 划分上下两个窗格
指  令:tmux split
快捷键:Ctrl+s “# 划分左右两个窗格
指  令:tmux split -h
快捷键:Ctrl+s %# 光标切换到上方窗格
指  令:tmux select-pane -U
快捷键:Ctrl+s 方向键上# 光标切换到下方窗格
指  令:tmux select-pane -D
快捷键:Ctrl+s 方向键下# 光标切换到左边窗格
指  令:tmux select-pane -L
快捷键:Ctrl+s 方向键左# 光标切换到右边窗格
指  令:tmux select-pane -R
快捷键:Ctrl+s 方向键右

6.常用命令

Ctrl+b激活控制台;此时以下按键生效!!!

举个例子:帮助命令的快捷键是Ctrl+s ?它的用法是:在 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	        顺时针旋转当前窗口的面板

7.其他技巧

1. tmux/screen rz/sz 文件卡死快速退出方法。(tmux 暂不能使用rz/sz)

  • 按住Ctrl键, 再按五次x键 (强行终断传输)

2. 评论区大佬给出的小技巧:(可以实现鼠标选中窗格和移动)

# 在tmux.conf里加一句:
set -g mouse on 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/627715.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kubernetes API 和流量控制:管理请求数量和排队进程

本文描述了我们最近遇到的一个真实案例&#xff1a;Kubernetes API 因其中一个集群中的大量请求而瘫痪。今天&#xff0c;我们将讨论我们如何处理这个问题&#xff0c;并提供一些关于如何预防它的提示。 高并发搞崩 Kubernetes API 一个非常普通的早晨&#xff0c;我们开始了…

SSC | Blue Prism报告:2024年智能自动化(IA)7大趋势预测

近日&#xff0c;RPA行业领导者SS&C | Blue Prism发布《2024智能自动化&#xff08;IA&#xff09;趋势与预测》报告。报告中提到&#xff0c;智能自动化&#xff08;IA&#xff09;与流程管理的有效融合&#xff0c;是实现数字化转型成功的核心。采用业务流程管理&#xf…

免费开源OCR 软件Umi-OCR

Umi-OCR 是一款免费、开源、可批量的离线 OCR 软件&#xff0c;基于 PaddleOCR&#xff0c;适用于 Windows10/11 平台 免费&#xff1a;本项目所有代码开源&#xff0c;完全免费。方便&#xff1a;解压即用&#xff0c;离线运行&#xff0c;无需网络。高效&#xff1a;自带高效…

数组的定义与越界问题

scanf标准读取函数 第一个冷知识&#xff0c;输入到scanf里面的内容都是字符串形式&#xff0c;但是&#xff01; scanf(“%d”,&a),%d决定了如何对输入的字符串进行操作 scanf用来读取标准输入&#xff0c;标准输入的内容需要放入到某个变量空间中去&#xff0c;因此变量…

Python数据分析案例34——IMDB电影评论情感分析(Transformer)

电影评论的情感分析 案例背景 很多同学对电影系列的数据都比较喜欢&#xff0c;那我就补充一下这个最经典的文本分类数据集&#xff0c;电影情感评论分析。用神经网络做。对国外的英文评论文本进行分类&#xff0c;看是正面还是负面情感。 数据集介绍 数据集&#xff1a;IMDb…

Python Tkinter Pack布局管理器

GUI 编程就相当于小孩子搭积木&#xff0c;每个积木块应该放在哪里&#xff0c;每个积木块显示为多大&#xff0c;也就是对大小和位置都需要进行管理&#xff0c;而布局管理器正是负责管理各组件的大小和位置的。此外&#xff0c;当用户调整了窗口的大小之后&#xff0c;布局管…

sphinx,一个神奇的 Python 库!

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 大家好&#xff0c;今天为大家分享一个神奇的 Python 库 - sphinx。 Github地址&#xff1a;https://github.com/sphinx-doc/sphinx/ 在软件开发和项目管理中&#xff0c;文档是不可或缺的一部分。好的文档可以…

企业工商年报在哪找?如何批量获取?

企业年报是什么&#xff1f;有什么用&#xff1f; 企业年报是企业每年必须向工商行政管理机关和税务机关报送的年度报告&#xff0c;是指公司整个会计年度的财务报告及其他相关文件。主要包括企业基本信息、资产负债表、利润表、现金流量表、股东及股本变化情况等内容。 作用…

SpringBoot集成p6spy

P6Spy 是一个可以用来在应用程序中拦截和修改数据操作语句的开源框架。 通过 P6Spy 我们可以对 SQL 语句进行拦截,相当于一个 SQL 语句的记录器,这样我们可以用它来作相关的分析,比如性能分析。这里主要用于在控制台打印SQL时能自动将问号替换成实际参数打印一个可执行的SQL…

SQL 语言详解

SQL 详解 我们通常可以将 SQL 分为四类&#xff0c;分别是 DDL&#xff08;数据定义语言&#xff09;、DML&#xff08;数据操作语言&#xff09;、DQL&#xff08;数据查询语言&#xff09;和 DCL&#xff08;数据控制语言&#xff09;。DDL 主要用于创建、删除、修改数据库中…

云计算任务调度仿真04

这次分享一篇更加高级的云计算任务调度的文章和代码&#xff0c; 基于A3C学习和残差回归神经网络的随机边缘云计算环境动态调度 网络结构 结果 代码示例 这是基于pytorch实现的&#xff0c;所以复现起来没有什么难度&#xff0c;但是可以看到这有六层网络&#xff0c;而且…

KubeSphere 核心实战之一【在kubesphere平台上部署mysql】(实操篇 1/3)

文章目录 1、登录kubesphere平台2、kubesphere部署应用分析2.1、工作负载2.2、服务2.3、应用路由2.4、任务2.5、存储与配置2.6、部署应用三要素 3、部署mysql3.1、mysql容器启动实例3.2、mysql部署分析3.3、创建mysql的配置3.4、创建mysql的数据卷pvc3.5、创建mysql工作负载3.6…

java应用中swagger使用

文章目录 前言使用依赖引入配置注解使用controller中注解实体类注解 页面展示 前言 现在前后端分离式开发&#xff0c;最头疼的部分就是接口文档了。最讨厌两种人&#xff0c;一种是不写接口文档的人&#xff0c;另一种则是让我写接口文档的人。实际上&#xff0c;我们有一款特…

yolov5_obb win10环境安装

1、项目地址&#xff1a; GitHub - hukaixuan19970627/yolov5_obb: yolov5 csl_label.(Oriented Object Detection)&#xff08;Rotation Detection&#xff09;&#xff08;Rotated BBox&#xff09;基于yolov5的旋转目标检测yolov5 csl_label.(Oriented Object Detection)…

手机与电脑更改IP地址怎么使用代理IP?

在现代互联网时代&#xff0c;代理IP已成为许多人日常生活和工作中不可或缺的一部分。通过代理IP&#xff0c;用户可以隐藏自己的真实IP地址&#xff0c;并获得更好的网络体验。本文将详细介绍如何在手机和电脑上更改IP地址并使用代理IP。 一、手机使用代理IP 1. 打开手机设置&…

微服务接口工具Swagger2

##1、什么是Swagger? # 官网 https://swagger.io/核心功能 生成接口说明文档生成接口测试工具 2、SpringBoot集成Swagger2 1&#xff09;、添加依赖 <!-- swagger2 --><!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 --><depen…

[WUSTCTF2020]alison_likes_jojo 1

BUUCTF:https://buuoj.cn/challenges 题目描述&#xff1a; 得到的 flag 请包上 flag{} 提交。 感谢 Iven Huang 师傅供题。 比赛平台&#xff1a;https://ctfgame.w-ais.cn/ 密文&#xff1a; 下载附件解压&#xff0c;得到两张jpg图片和一个文本文件。 解题思路&#x…

[DL]深度学习_Feature Pyramid Network

FPN结构详解 目录 一、概念介绍 二、结构详解 1、对比试验 2、特征图融合 3、结构详解 4、不同尺度预测 5、Proposal映射到预测特征层 一、概念介绍 Feature Pyramid Network (FPN)是一种用于目标检测和语义分割的神经网络架构。它的目标是解决在处理不同尺度的图像时…

【工业物联网】现代企业环境中的DCS(分布式控制系统)和SCADA(站点控制和数据采集)...

快答案&#xff1a; SCADA和DCS作为单独的系统开始&#xff0c;但一起成长。今天的带宽如此广泛&#xff0c;不需要在每个节点进行本地化。 SCADA和DCS&#xff1a;如果您参与管理企业级网络&#xff0c;您可能已经听说过这些术语。本文将阐明两种技术之间的区别。请注意&#…

pycharm管理仓库(Manager Repository)不见了

经常使用pycharm的大佬们都知道&#xff0c;pycharm中内置了很多库和包&#xff0c;很好用 但是下载来用自带的源很麻烦&#xff0c;于是就用国内的源 可以当我们添加管理仓库的时候&#xff0c;却没有了按钮&#xff0c;如何解决呢&#xff1f; 回到pycharm的主界面&#xf…