常用Shell命令集合和使用技巧(推荐)

 更新时间:2020年05月19日 14:04:20   作者:李俊的博客  
这篇文章主要介绍了最常用Shell命令集合和使用技巧,本文分场景通过实例讲解给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

一、控制台使用技巧

基于我平时的工作经验,总结出一些我常用的快捷键

1.1 操作快捷键

      Ctrl+r:可以快速查找历史命令

      Ctrl+a / Ctrl+e:移动光标到命令行首 / 行尾

      Ctrl+w / Ctrl+k:删除光标之前 / 之后的内容

1.2 VIM文件编辑快捷键

       ZZ:文件保存并退出

1.3 进程操作快捷键

       Ctrl+c:强制终止程序

       Ctrl+z:挂起一个进程

       Ctrl+d: 终端输入exit后回车

1.4 linux命令中快捷键(top)

       Shift + p: 根据CPU使用率排序

       Shift + m: 根据Mem使用率排序

二、Shell命令合集

首先,我们先对Shell命令合集做一个分类,主要可分为 空间分析,指定文件操作,链接状态分析,IP信息提取

2.1 空间分析

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

该场景主要用在linux操作系统磁盘空间不足,需要快速定位磁盘使用情况,对文件的磁盘使用率做排序,需要用到如下组合命令:

du -x --max-depth=1 / | sort -k1 -rn #-x 表示跳过其他文件系统

-x表示跳过其他文件系统,只分析本文件系统里面的文件,排除一些额外的干扰项;--max-depth=1 表示只分析/ 目录下第一级目录下的所有文件大小;-k 表示具体按照那一列进行排序;-r是倒序排列;-n表示只对数值排序

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

该场景主要是操作系统产生大量碎片文件,随之消耗大量innode,innode的过渡使用会导致innode资源不足无法创建文件,因为du 命令只能统计磁盘使用情况无法统计碎片文件的个数,所以统计碎片文件个数需要用到如下组合命令

find -type f | awk -F/ -v OFS=/ 
 '{$NF="";dir[$0]++}END
{
for (i in dir) print dir[i] i}' | sort -k1 -rn | head

这条命令比较复杂,使用了find,awk,sort,head。

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

2.2 指定文件操作

场景一:批量查找文件对内容做替换

场景一适用于一个目录下有多个子目录,并且子目录下有大量文件,我们需要找到指定文件然后替换文件里面的内容,需要用到如下组合命令:

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

通过find命令查找当前目录下的所有子文件夹名称为 consumer.xml 的文件,然管道给 sed ,通过-i把文件内容替换。

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

场景二主要是用在对查找到的指定文件进行打包,然后拷贝到指定路径,可以使用如下组合命令:

netstat -n | awk '/^tcp/{arr[$NF]++
} 
END {for (i in arr) print arr[i] " " i
}'

查找当前目录下的所有以 .txt结尾的文件,然后打包成test.tar,如果打包成功则把压缩包拷贝到/home目录下

2.3 网络连接状态分析

场景一:列出tcp协议下的连接,并统计所有状态的总量

场景一主要用在查看服务器当前有多少TCP类型的连接,分析TCP/IP网络状态(ESTABLISHED,TIME_WAIT)

netstat -n | awk '/^tcp/{arr[$NF]++} END {for (i in arr) print arr[i] " " i}'

对于awk命令整体规则而言有一个 {} END {} 格式,上述命令分析了TCP协议下,所有类型连接的总数,可用于分析查看当前服务器连接数。

2.4 IP信息提取

场景一:通过命令获取主机IP信息

ip a|grep "global"|awk'{print $2}'|awk -F/'{print $1}'

ip a负责查看主机上所有的网卡信息,然后过滤 global关键字,打印出第二列,再把子网掩码移除掉即可获取到主机ip

三、常见问题

问题一:Shell适不适合作多并发任务

答:不适合,Shell中一般是通过nohup的方式把需要并发执行的任务放入后台,这样做有存在一些问题,包括  进程状态不好控制,进程间信息共享一般以文件形式进行等,所以当需要进行大的并发任务执行时,建议使用Python,Go,PHP语言实现并发。

问题二:Shell适合用在什么场景中

答:Shell 适合用在追求运维高效(非性能高效)要求的简单场景中,如日志切割、进程分析、系统初始化等。

总结

到此这篇关于常用Shell命令集合和使用技巧(推荐)的文章就介绍到这了,更多相关Shell命令集合和使用技巧内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Linux压缩及解压缩命令tar|zip|rar|xz操作方法

    Linux压缩及解压缩命令tar|zip|rar|xz操作方法

    不管Linux还是其他操作系统,数据的压缩和解压缩操作是经常用到的,在windows平台文件的相关操作被傻瓜化了,到了Linux平台让好多小伙伴感觉有点束手无策,本文为大家讲解Linux的常用压缩包操作,格式包含tar.gz, .tgz, .tar.bz2, .zip, .rar, .tar.xz,感兴趣的朋友一起看看吧
    2024-02-02
  • Shell脚本中引用、调用另一个脚本文件的2种方法

    Shell脚本中引用、调用另一个脚本文件的2种方法

    这篇文章主要介绍了Shell脚本中引用、调用另一个脚本文件的2种方法,本文介绍了两种方法的语法,然后给出实际使用实例和一些要注意的地方,需要的朋友可以参考下
    2015-06-06
  • shell 使用数组作为函数参数的方法(详解)

    shell 使用数组作为函数参数的方法(详解)

    下面小编就为大家带来一篇shell 使用数组作为函数参数的方法(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • shell中冒号的特殊用法分享

    shell中冒号的特殊用法分享

    有关shell中冒号的特殊用法,供朋友们参考
    2013-02-02
  • 一篇通俗的Linux Shell体验教程

    一篇通俗的Linux Shell体验教程

    Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。本文将简单介绍Linux shell体验,感兴趣的小伙伴可以参考一下
    2023-05-05
  • Linux Shell 截取字符串的方法示例

    Linux Shell 截取字符串的方法示例

    这篇文章主要介绍了Linux Shell 截取字符串的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • Linux命令之cat和tail的用法介绍

    Linux命令之cat和tail的用法介绍

    这篇文章主要,给大家带来的是 Linux 命令系列,要介绍的是两个常用的查看文件内容的命令:cat 和 tail 命令,文中代码示例介绍的非常详细,需要的朋友可以参考下
    2023-06-06
  • Linux网络设置详情

    Linux网络设置详情

    这篇文章主要介绍了Linux网络设置,需要的朋友可以参考下面文章内容
    2021-08-08
  • Linux链接命令的实例详解

    Linux链接命令的实例详解

    这篇文章主要介绍了Linux链接命令的实例详解的相关资料,希望通过本文大家能掌握Linux链接命令的使用方法,需要的朋友可以参考下
    2017-08-08
  • 使用shell脚本取出服务器图片的方法

    使用shell脚本取出服务器图片的方法

    Shell 脚本(shell script),是一种为 shell 编写的脚本程序。下面通过本文给大家介绍使用shell脚本取出服务器图片的方法,需要的朋友参考下吧
    2017-12-12

最新评论