前言

Linux的字符命令界面中我们可以通过指令查看当前主机分区的使用率,并且可以当达到预设警值时通过字符终端、邮件等进行警告。

主机环境:CentOS 6.8 、 VMware® Workstation 12 Pro

正文

① df 命令

使用 df 命令来检查当前linux服务器的文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

df -h
列出当前主机磁盘空间占用情况,其中-h选项是human的意思,意为采用人们方便阅读的形式查看,即以B,K,M,G为单位显示

df

② grep 命令

使用 grep 命令可以查找当前文本或文件中的目标文本。这里我们以分区sda5 分区为例

df -h | grep sda5
从刚才列出的磁盘相关信息中查找出 sda5 分区的相关信息,其中“ | ”符号为管道符,可以理解为将 df -h 指令列出的文本流,通过管道流向 grep sda5 处理。grep sda5 可以查找出有关 sda5 分区的那一行的相关信息

dfgrep

③ awk 命令

awk 也是一种处理文本文件的语言,是一个强大的文本分析工具。
之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的Family Name的首字符。

df -h | grep sda5 | awk '{ print \$5 }'
有第②条命令我们筛选出了有关 sda5 分区的相关信息,并将其信息通过管道符交给 awk 命令处理。{ } 命令代码块,包含一条或多条命令;print 是 awk 打印指定内容的主要命令。print $5 即为打印该文本中的第5列文本。

dfgrepawk

④ cut 命令

cut 命令可以实现文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
-d :自定义分隔符,默认为制表符。
-f :与-d一起使用,指定显示哪个区域。

df -h | grep sda5 | awk '{ print $5 }' | cut -d "%" -f 1
从第③条命令我们就已经筛选出了我们的 sda5 分区目前所占空间的比例,但是在shell编程中,文本默认都是字符串文本,而并非数值文本,故我们先把数字文本提取出来,方便之后比较。
在这条命令中我们将以 % 号为分隔符,并且输出第一列内容。根据结果可以看出输出结果为数字文本。

dfgrepawkcut

⑤ 判断数值并做出警告

我们可以将我们的以上的指令写入一个脚本中,如 warn.sh 脚本文件。

vim warm.sh

    #!/bin/bash     # 脚本文件标准开头
    occupy=$(df -h | grep sda5 | awk '{ print $5 }' | cut -d "%" -f 1)
    # 如果占用比大于90%,则报警输出警告文本
    if [ "$occupy" -ge "90" ]   
            then
            echo "sda5 is full"
    fi

chmod 755 warm.sh #设置脚本文件权限,使其可执行
./warm.sh #执行脚本文件

此处输入图片的描述

结果会发现并没有输出结果,那是因为我们现在 sda5 所占分区仅占16%,远未达到所设定的90%。现在我们将脚本中的判断语句改为 if [ "$occupy" -ge "10" ],即设为达到10%即报警,再次执行脚本,结果如下:

此处输入图片的描述


Logo

更多推荐