c++控制台应用每一列数据如何对齐_大厂运维高手如何打造核心竞争力?这些Shell命令合集得知道!...

作者简介:牧客,前阿里巴巴运维专家。 本文选自:拉勾教育专栏《运维高手的36项修炼
你好,我是牧客。 我在运维领域深耕10余年,现在是一家知名互联网公司架构师。我曾就职于大型互联网公司阿里巴巴、大型国企中国体彩等,先后担任运维专家、SRE负责人、运维架构师等核心岗位。 今天给大家讲解一下 Shell 命令合集,以及对控制台的使用技巧。  首先,我们需要对 Shell 命令合集做一个分类。

1.空间分析

场景 1:磁盘空间不足,需快速定位日志目录;

场景 2:系统产生很多碎片文件,导致 inode 资源不足。

2.指定文件操作

场景 1:批量查找文件作内容替换;

场景 2:批量查找文件作拷贝打包。

3.链接状态分析

场景:想了解用户请求所建立的网络连接状态分析。

4.IP 信息提取

场景:shell 脚本中希望快速提取到本机 IP 。

空间分析-场景1

该场景主要应用于当磁盘空间不足需要快速定位或者对文件使用率进行排序,需要查看哪一些文件目录或者文件占用的空间比较多,就需要如下组合命令。
du -x --max-depth=1/ |sort -k1 -nr
我们可以看到这一个命令组合由两个 Shell 命令组成,前面的 du 命令进行磁盘统计,第二个 sort 命令对统计后的数据进行排序,中间通过 | 管道符来传递数据。管道符 | 的作用是将前一个命令的输出传递到下一个命令的输入。 du 命令中 -x 参数表示跳过其他文件系统,也就是只分析本文件系统里的文件,它可以帮助我们排除一些非本文件系统的统计信息,这样执行速度会更快也不容易出现一些额外的干扰项。--max-depth 参数设置为 1,这样就可以统计出根目录下第一级目录中的所有文件的大小。第二个命令sort中 -k 参数指明具体按照哪一列进行排序,-n 参数表示只对数值进行排序,而 -r 参数表示反向排序,那整体分析 sort 这一段命令的意思就是指定第一列并按照数据大小做反序排序。

空间分析-场景2

场景 2 适用于系统上产生很多碎片文件时,随之产生大量的 Inode , Inode 用于存放着文件系统中文件的源数据,Inode过渡的使用会导致系统 Inode 资源不足。这种情况是不正常的,这个时候分析如果通过du 命令指能具体展示出磁盘空间的使用情况,但并不能分析出具体目录下产生了多少碎片文件,我们就需要如下的命令组合来对文件进行统计分析。
find -type f|awk -F/-v OFS=/'{$NF="";dir[$0]++}END{for(i in dir)print dir[i]""i}'|sort -k1 -nr|head
基于管道可以将这个命令组合切割成四部分,分别是 find、awk、sort、head 命令。 其中 find 命令通过 -type -f 参数查找指定文件类型的文件,然后将查找结果通过管道传递给 awk,它可以把文本内容按行进行格式化输出并展示,-F / 指定处理文件时字符串之间以 / 进行分割,-v OPS=/ 表示文件显示结果时以 / 进行分割展示。对于awk命令整体规则而言有一个 {} END {} 格式,前面的 {} 表示行处理操作,END{} 表示行处理后需要进行整体结果出。在行处理操作逻辑中,设置$NF 为空表示将每一行的文件名信息去除,从而只保留目录路径,dir 是一个自增数组,用于统计结果。最后通过 for 循环进行遍历输出dir关联数组中所有行信息。 因为这个命令组合比较复杂,我们在控制台中来看具体的演示,首先在控制台中输入这一串命令组合。         108b2da6f9c61f120c8e9612440997b3.png         你可以看到在当前目录路径通过执行命令,结果中已经把每一个产生文件的路径都展示出来了,并且前面还会显示在每一个路径下一共包含了多少文件,如果我们系统 提示inode 使用率问题,需要分析出哪个路径下的文件数最多,这时就可以通过 这个组合命令来进行分析。

文件操作-场景1

文件操作的场景主要有两个,第一个场是批量文件内容需要进行替换,也就是当我们在一个文件目录下面有多级子目录,并且子目录中有大量的文件,而我们需要对目录下的某一个名称的文件批量的查找替换内容。面对这种场景我们可以使用如下的组合命令:
find ./-type f -name consumer.xml -exec sed -i"s/aaaaaa/bbbbbb/g"{}\;
我们通过 find + 路径 的方式查找需要批量修改的指定的文件名,比如命令中的 consumer.xml 文件,查找到文件后通过 find 自带的参数 exec 将结果传递给另外一条命令 sed 来进行下一步命令的处理。 find 命令中,-name 参数指定查找的文件名,-exec 参数将查找到的内容传递给下一个命令去继续执行相关逻辑,sed 命令主要对文件内容进行替换,这里会将 consumer 文件中的 aaaaaa 替换成 bbbbbb,这就是一个批量查找替换的操作

文件操作-场景2

文件操作的第二种场景是我们需要对文件进行批量的打包、拷贝,你可以看到下面这样的一个组合命令:
(find .-name "*.txt"|xargs tar -cvf test.tar) && cp -f test.tar /home/.
首先我们来看下括号中的部分,括号中包含两条命令,它们使用管道符进行连接,括号外通过"&&"符号与第三条命令进行连接,也就是我们首先需要执行括号中的组合命令,先查找所有 .txt 文件,然后将结果传递给 xargs 命令进行打包, 如果打包成功后才将压缩包传递给 cp 命令进行拷贝。

网络连接状态分析

对于网络连接状态分析是运维工程师经常需要做的事情,因为我们经常需要了解系统对外提供的网络服务是否正常,并了解它们的连接状态,这时就可以通过如下的命令组合进行操作:
netstat -n|awk '/^tcp/ {++S[$NF] END {for(a in S) print a,S[a]}'
我们先来分析下这个命令组合的构成,整体上来说它由两个命令构成,第一个命令是 netstat -n,这个命令负责查看主机上的所有 TCP、UDP 连接信息,而 awk 命令则负责对这些信息进行进一步的处理,awk 后有一个用两个 "斜杠" 括起来的正则表达式,主要用来匹配以 tcp 开头的每一行信息, 所以这里的正则表达式起到了一个过滤的作用(只分析 tcp 的连接) ,后面则是对信息过滤后进行具体的统计和输出。

IP信息提取

而另外一个场景就是提取主机上的 IP 信息,这里推荐使用如下的命令组合:
ip a|grep "global"|awk'{print $2}' |awk -F/'{print $1}'
可以看到它的结构组成也比较简单,分别是由四个命令组合而成,前面的 ip a 负责查看主机上所有网卡的信息,然后通过 grep 进行条件过滤,再通过 awk 实现第二列内容输出,最后通过 awk 以指定 / 作为分隔符来打印第一列的信息。

以上就是本次分享的全部内容啦。下次分享,我将讲解关于 Nginx 相关的配置优化,记得关注 IT 技术思维哦~ 版权声明:本文版权归属拉勾教育及该专栏作者,任何媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发布/发表,违者必究。 0dc15581dc13735b191c5b23364eaa13.gif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值