常用Shell命令

在linux系统中经常执行命令操作,以下是我们经常用到的一些shell命令。

  • 操作快捷键
    • Ctrl+r:可以快速查找历史命令;
    • Ctrl+l:可以清理控制台屏幕;
    • Ctrl+a\Ctrl+e:移动光标到命令行首\行尾;
    • Ctrl+w\Ctrl+k:删除光标之前\之后的内容。
  • VIM文件编辑快捷键
    • 快捷键ZZ:文件保存并退出。
  • 进程操作快捷键
    • Ctrl+c:强制终止程序的执行;
    • Ctrl+z:挂起一个进程,fg/bg操作继续前台或后台的任务;
    • Ctrl + d:终端中输入 exit 后回车。
  • linux命令中快捷键(top)
    • Shift + p:根据 CPU 使用率排序;
    • Shift + m:根据内存占用排序。

日常运维shell命令操作

  • 磁盘空间不足,需快速定位日志目录

当磁盘空间不足,需要快速定位或者对文件使用率进行排序,需要查看哪一些文件目录或者文件占用的空间比较多。

du -x --max-depth=1 / |sort -k1 -nr

这个命令组合由两个Shell命令组成,前面的du命令进行磁盘统计,第二个sort命令对统计后的数据进行排序,中间通过|管道符来传递数据。管道符|的作用是将前一个命令的输出传递到下一个命令的输入。

du 命令中 -x 参数表示跳过其他文件系统,也就是只分析本文件系统里的文件,它可以帮助我们排除一些非本文件系统的统计信息,这样执行速度会更快也不容易出现一些额外的干扰项。–max-depth 参数设置为 1,这样就可以统计出根目录下第一级目录中的所有文件的大小。

sort命令中 -k 参数指明具体按照哪一列进行排序,-n 参数表示只对数值进行排序,而 -r 参数表示反向排序,那整体分析sort 这一段命令的意思就是指定第一列并按照数据大小做反序排序。

  • 系统产生很多碎片文件,导致 inode 资源不足

当系统上产生很多碎片文件时,随之产生大量的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命令通过-type-f参数查找指定文件类型的文件,然后将查找结果通过管道传递给awk,它可以把文本内容按行进行格式化输出并展示,-F/指定处理文件时字符串之间以/进行分割,-vOFS=/表示文件显示结果时以/进行分割展示。对于awk命令整体规则而言有一个{}END{}格式,前面的{}表示行处理操作,END{}表示行处理后需要进行整体结果出。在行处理操作逻辑中,设置$NF 为空表示将每一行的文件名信息去除,从而只保留目录路径,dir 是一个自增数组,用于统计结果。最后通过 for 循环进行遍历输出dir关联数组中所有行信息。

在当前目录路径通过执行命令,结果中已经把每一个产生文件的路径都展示出来了,并且前面还会显示在每一个路径下一共包含了多少文件,如果我们系统提示inode使用率问题,需要分析出哪个路径下的文件数最多,可以通过 这个组合命令来进行分析。

  • 批量查找文件作内容替换

在批量文件内容需要进行替换时,当我们在一个文件目录下面有多级子目录,并且子目录中有大量的文件,而我们需要对目录下的某一个名称的文件批量的查找替换内容。

find ./-type f -name weijing.txt -exec sed -i"s/weijing/viking/g"{}\;

通过find+路径的方式查找需要批量修改的指定的文件名,比如命令中的consumer.xml文件,查找到文件后通过find自带的参数exec将结果传递给另外一条命令sed来进行下一步命令的处理。

find 命令中,-name 参数指定查找的文件名,-exec 参数将查找到的内容传递给下一个命令去继续执行相关逻辑,sed 命令主要对文件内容进行替换,这里会将weijing.txt文件中的 weijing替换成viking,这就是一个批量查找替换的操作。

  • 批量查找文件作拷贝打包

当需要对文件进行批量的打包、拷贝时,可以如下操作:

(find . -name "*.txt"|xargs tar -cvf weijing.tar) && cp -f weijing.tar /root/.

括号中包含两条命令,它们使用管道符进行连接,括号外通过”&&”符号与第三条命令进行连接,也就是我们首先需要执行括号中的组合命令,先查找所有.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 add|grep "global"|awk'{print $2}'|awk -F/'{print $1}'

ip add负责查看主机上所有网卡的信息,通过 grep 进行条件过滤,再通过 awk 实现第二列内容输出,最后通过 awk 以指定 / 作为分隔符来打印第一列的信息。

  • shell 的远程执行命令
当 Shell 进行远程执行命令时,通过 ssh xx@xxx.xxx.xxx.xxx /home/weijing/install.sh 参数的方式执行。

发表评论