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

Linux监控系统磁盘使用比例,当使用率达到指定比例,删除指定目录下的所有文件的shell脚本

2017-12-01 23:44 1826 查看
在服务器运维过程中,经常需要对服务器的各种资源进行监控,例如:CPU的负载监控,磁盘的使用率监控,进程数目监控等等,以下是Linux监控系统磁盘使用比例,当使用率达到指定比例,删除指定目录下的所有文件shell脚本的编写。在本文中,使用自动生成文件模拟在磁盘中添加文件等资料占用磁盘空间,增大磁盘占用率。该功能的shell脚本的具体实现如下:

首先在编写脚本的文件目录下新建一个名为tmp的临时文件(文件名可以自己定义),用于保存生成的文件,命令为:

mkdir tmp


我们可以ls 命令进行查看。可以看到当前目录下的新增的tmp文件。

打开一个用于编写shell脚本的文件,命令为:

vi WatchDisk.sh


这里的文件名可以自己定义,一般取比较容易理解的名称:在vi WatchDisk.sh文件中编写该脚本的代码如下:

1 #!/bin/bash
2 i=0
3 path=$1
4 max=$2
5
6 #path 和 max为从键盘输入的参数,分别表示生成文件的目录和自己设定开始删除文件的磁盘占用率
7 #如果输入参数小于2个则输出提示并退出
8 if [ $# -lt 2 ]
9 then
10     echo "argument error"
11     exit
12 fi
13
14 while [ true ]
15 do
16     #生成文件,文件名为helloi,i是从0增加的整数,生成的文件存放在当前目录下的tmp 文件中I
17     dd if=/dev/zero of=./tmp/hello${i}.txt bs=5M count=1
18     ((i++))
19     sleep 0.3
20     #获取磁盘占用率的整数数值
21     value=$(df -h | grep sda |awk -F ' ' '{print $5}' | cut -d '%' -f 1)
22     #将磁盘占用率与指定的最大占用率相比较,如果大于max则删除指定目录下的所有文件
23     if [ ${value} -gt $max ]
24     then
25         rm ${path}/*
26     fi
27
28     sleep 0.5
29 done


为WatchDisk.sh添加可执行权限,命令如下:

chmod +x WatchDisk.sh


首先输入命令查看当前的磁盘占用率,命令为:
df -h | grep sda




为了方便查看程序执行结果:我们同时打开两个终端,一个执行shell脚本,一个监测磁盘空间。



我们可以发现当执行文件是不输入参数,或只输入一个参数,输出提示并退出。



当正确输入新建文件的文件名和开始删除的文件磁盘占用率是正常执行。



通过执行结果我们可以看到当磁盘占用率到达我们输入的开始删除文件的磁盘占用率35%时,磁盘占用率变成最初的32%,这是因为执行了删除当前目录下tmp目录下的所有文件。这时我们打开tmp文件,命令
vi tmp
可以看到如下图:



按照代码生成的文件应该是从hello0.txt 开始,图片中可以看到的文件是从hello118.txt开始,这是因为在删除全部文件是没有及时退出WatchDisk.sh的执行,在退出前生成的文件,而在之前生成118个(从0开始)helloi 文件正好磁盘占用率达到36%大于35%,所以将前面的文件全部删除,开始循环产生文件。

刚开始接触Linux,昨天看到一篇关于Linux系统监控的博客,自己尝试实现了
4000
一下,可能存在很多疏忽的地方,但基本上功能可以简单实现。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息