您的位置:首页 > 运维架构 > Linux

编写脚本文件查看Linux分区使用率,超出范围并报警

2017-08-27 21:45 1061 查看

前言

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

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

正文

① df 命令

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

df -h


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



② grep 命令

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

df -h | grep sda5


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



③ awk 命令

awk 也是
4000
一种处理文本文件的语言,是一个强大的文本分析工具。

之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的Family Name的首字符。

df -h | grep sda5 | awk '{ print \$5 }'


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



④ cut 命令

cut 命令可以实现文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。

-d :自定义分隔符,默认为制表符。

-f :与-d一起使用,指定显示哪个区域。

df -h | grep sda5 | awk '{ print $5 }' | cut -d "%" -f 1


从第③条命令我们就已经筛选出了我们的 sda5 分区目前所占空间的比例,但是在shell编程中,文本默认都是字符串文本,而并非数值文本,故我们先把数字文本提取出来,方便之后比较。

在这条命令中我们将以 % 号为分隔符,并且输出第一列内容。根据结果可以看出输出结果为数字文本。



⑤ 判断数值并做出警告

我们可以将我们的以上的指令写入一个脚本中,如 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%即报警,再次执行脚本,结果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: