作者简介:牧客,前阿里巴巴运维专家。本文选自:拉勾教育专栏《运维高手的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关联数组中所有行信息。因为这个命令组合比较复杂,我们在控制台中来看具体的演示,首先在控制台中输入这一串命令组合。你可以看到在当前目录路径通过执行命令,结果中已经把每一个产生文件的路径都展示出来了,并且前面还会显示在每一个路径下一共包含了多少文件,如果我们系统 提示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 技术思维哦~版权声明:本文版权归属拉勾教育及该专栏作者,任何媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发布/发表,违者必究。

shell遍历根目录_大厂运维高手如何打造核心竞争力?这些Shell命令合集得知道!...相关推荐

  1. awk取列 shell 读文件_大厂运维高手如何打造核心竞争力?这些Shell命令合集得知道!...

    作者简介:牧客,前阿里巴巴运维专家. 本文选自:拉勾教育专栏<运维高手的36项修炼> 你好,我是牧客.我在运维领域深耕10余年,现在是一家知名互联网公司架构师.我曾就职于大型互联网公司阿里 ...

  2. python运维工程师前景及待遇_做运维工程师有前途吗?

    运维是一个进入门槛低,但是发展前景大的行业. 去年我们老板从运维总监职位退下来的时候年薪75万,所以不要小看这个行业. 但是前路漫漫,想在这个领域有长足的发展,要学习很多,付出很多. "今年 ...

  3. linux运维基础进阶和shell入门,Linux运维工程师从基础到进阶:Shell变量知识梳理...

    原标题:Linux运维工程师从基础到进阶:Shell变量知识梳理 Shell是一个用C语言编写的程序,它是用户使用Linux的桥梁.Shell既是一种命令语言,又是一种程序设计语言,涵盖的知识点多且杂 ...

  4. python运维需要哪些技术_学习运维技术要掌握哪些知识点?

    对于Linux运维技术,想学习的人很多.随着云计算.大数据和人工智能的迅速发展,Linux技术也越来越流行.众多企业都开始向Linux服务器的使用转变.学习Linux运维需求量的增加,吸引了众多想要转 ...

  5. 运维部门工作总结_系统运维工作总结

    系统运维工作总结 篇一:年终总结 20XX 年运维部工作总结 20XX 年业已尾声, 我部门在公司的正确领导下, 认真执 行公司制定的各项制度及部门制度,努力改进工作中存在的 不足,并取得了一定进步, ...

  6. 运维工程师必会的linux命令下载,运维工程师必会的109个Linux命令.pdf

    Linux公社 运维工程师必会的109 个Linux 命令 版本 1.0 崔存新 目录 1 文件管理 5 1.1 basename 5 1.2 cat 5 1.3 cd 6 1.4 chgrp 6 1 ...

  7. linux中sed和find,Linux运维知识之Linux 之 sed 与 find 命令结合使用

    本文主要向大家介绍了Linux运维知识之Linux 之 sed 与 find 命令结合使用,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助. sed 与 find 命令结合使用 目 ...

  8. 运维基本功(十二): Linux命令回顾与扩展

    本文是在课程课件基础上修改的学习笔记 课程原地址:https://www.bilibili.com/video/BV1nW411L7xm 如有侵删 运维基本功(一):Linux系统安装 运维基本功(二 ...

  9. linux sudo 命令无法使用,Linux运维知识之解决Linux下无法使用sudo命令问题

    本文主要向大家介绍了Linux运维知识之解决Linux下无法使用sudo命令问题,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助. 问题描述 使用普通用户登录后在终端中执行sudo ...

最新文章

  1. 运维管理工具+chef+puppet+ansible+SaltStack
  2. android 中的PopupWindow
  3. Qt——容器类(译)
  4. c语言什么是合法的变量名,在C语言中,下列合法的变量名包括
  5. android 6gb和8gb区别,手机6GB内存和8GB内存的差距到底有多大?你可能被忽悠了!...
  6. 计算机网络与通信这门课难不难,【知乎】计算机网络这门课为何如此之难
  7. 延时求和波束形成的MATLAB仿真
  8. (chap4 IP协议) IPV6(IP version 6)
  9. 计算机一级考试试题window,全国计算机等级考试一级Window复习题及答案.doc
  10. 实验3 编程、编译、链接、跟踪
  11. Android——4.2.2 文件系统文件夹分析
  12. 7. Nginx 预定义变量
  13. The Basic Knowledge of Graph(图的基本知识)
  14. Java虚拟机的参数
  15. 【HAL库系列】1.STM32CubeIDE下载与配置
  16. 腾讯发布三项息争前提 360将扣扣保镖下线
  17. linux中syscmd用法,M4 宏处理器
  18. oracle归档日志 delete obsolete 保留一次全备,DELETE OBSOLETE不删除归档日志以及归档的备份集...
  19. USYD悉尼大学INFO1110 详细作业解析Week4 revision(未更新完)
  20. Unity显示360度全景照片

热门文章

  1. 22. javacript高级程序设计-高级技巧
  2. ios--小结系列三
  3. The mbstring extendsion is missing,Please check you PHP configuration
  4. Bailian3180 整数减法【大数】
  5. Bailian3754 字符环【字符串】
  6. Bailian3704 扩号匹配问题【堆栈】
  7. UVA10608 Friends【并查集】
  8. 独立事件、笛卡尔积与矩阵向量乘法
  9. 历法 —— 星期与“日月火水木金土”
  10. 【剑指 offer】(十四)—— 调整数组顺序使奇数位于偶数之前