当前位置: 首页 > 科技观察

Linux-自动监控磁盘使用情况的Shell脚本

时间:2023-03-13 21:16:10 科技观察

如果您在服务器上运行关键任务,监控并通知管理员磁盘使用情况非常重要。本文描述了编写脚本以在达到阈值时自动监视并向您的邮箱发送报告。在本文中,我们编写了一个shell脚本,它以crontab中指定的固定时间间隔监视磁盘使用情况,并在达到指定阈值时通过电子邮件发送报告。首先需要确保系统已经安装了mail命令和postfix来发送邮件服务。下面是Centos8安装的命令:[root@localhost~]#yum-yinstallmailxpostfix[root@localhost~]#systemctlenable--nowpostfix使用mail命令发送邮件测试:[root@localhost~]#echo"此消息将进入邮件正文。"|邮件-s“从服务器测试。”root@localhos本文不讲解如何配置smtp服务。测试磁盘使用情况的脚本以下是测试磁盘使用情况并将报告发送到指定邮箱的脚本。脚本的解释在代码片段之后给出。[root@localhost~]#vimdisk-monitor.sh#!/bin/bashMAILID="admin@linuxprobe.com"VALUE=80SERVERNAME=$(hostname)MAIL=/bin/mailforlinein$(df-hP|egrep'^/dev/'|awk'{print$1"_:_"$5}')doFILESYSTEM=$(echo"$line"|awk-F"_:_"'{print$1}')DISK_USAGE=$(echo"$line"|awk-F"_:_"'{print$2}'|cut-d'%'-f1)if[$DISK_USAGE-ge$VALUE];thenEMAIL="$SERVERNAME-$(date):$FILESYSTEMExceededthethresholdVALUE\n"EMAIL="$EMAIL\nUsageDetails\nCurrentUsage:($DISK_USAGE%)Thresholdvalue:($VALUE%)"echo-e"$EMAIL"|$MAIL-s""$SERVERNAME"磁盘使用警报:需要注意!"$MAILID"elif[$DISK_USAGE-lt$VALUE];然后EMAIL="$EMAIL\n$FILESYSTEM($DISK_USAGE%)小于阈值($VALUE%)"EMAIL="$EMAIL\n"echo-e"$EMAIL"|$MAIL-s""$SERVERNAME"DiskUsageAlert:ThresholdNotReached""$MAILID"fidone监控脚本说明上述脚本使用df-hP命令获取内存信息。环境变量MAILID包含必须发送报告的电子邮件地址。VALUE保存要设置的阈值。SERVERNAME保存服务器的主机名,用于电子邮件通知中的服务器标识。使用for循环,它将遍历所有具有“/dev”挂载点的文件系统。然后它将文件系统名称和磁盘使用百分比保存到两个变量FILESYSTEM和DISK_USAGE。使用上述变量,磁盘使用率等于阈值VALUE变量。根据结果??,一封电子邮件将被发送到指定的邮箱。监控脚本执行接下来需要修改disk-monitor.sh脚本的权限,增加可执行权限:[root@localhost~]#chmod+xdisk-monitor.s使用如下方法运行脚本:[root@localhost~]#./disk-monitor.s自动化监控过程手动运行脚本没有意义,因为我们想要自动化该过程。自动化该过程的最佳方法是将脚本添加到crontab配置文件。使用以下方法打开crontab:[root@localhost~]#crontab-在配置文件中添加以下内容:*/5****sh/home/ec2-user/disk-monitor.sh