Bash 语言 系统磁盘空间监控脚本

Bash阿木 发布于 2025-06-13 14 次阅读


Bash 系统磁盘空间监控脚本编写与优化

在系统管理中,磁盘空间监控是一个至关重要的任务。它可以帮助管理员及时发现磁盘空间不足的情况,避免因空间不足导致的服务中断或数据丢失。Bash 脚本因其简单易用、跨平台等特点,成为系统管理员进行磁盘空间监控的首选工具。本文将围绕 Bash 语言,详细介绍如何编写一个系统磁盘空间监控脚本,并对脚本进行优化。

一、脚本需求分析

在编写磁盘空间监控脚本之前,我们需要明确以下需求:

1. 监控指定目录的磁盘空间使用情况。
2. 定期检查磁盘空间,例如每小时检查一次。
3. 当磁盘空间使用率超过预设阈值时,发送警告信息。
4. 脚本应具备良好的可读性和可维护性。

二、脚本编写

以下是一个简单的 Bash 脚本示例,用于监控指定目录的磁盘空间使用情况:

bash
!/bin/bash

设置监控目录
MONITOR_DIR="/var/log"

设置磁盘空间使用率阈值(例如:80%)
THRESHOLD=80

获取当前时间
CURRENT_TIME=$(date '+%Y-%m-%d %H:%M:%S')

检查磁盘空间使用情况
USE_RATE=$(df -h "$MONITOR_DIR" | awk 'NR==2 {print $5}' | sed 's/%//g')

判断磁盘空间使用率是否超过阈值
if [ "$USE_RATE" -gt "$THRESHOLD" ]; then
发送警告信息
echo "警告:$CURRENT_TIME,$MONITOR_DIR 目录磁盘空间使用率超过阈值 $THRESHOLD%,当前使用率为 $USE_RATE%" | mail -s "磁盘空间警告" admin@example.com
fi

三、脚本优化

1. 使用函数封装

为了提高脚本的可读性和可维护性,我们可以将重复的代码封装成函数。以下是对上述脚本进行优化的示例:

bash
!/bin/bash

设置监控目录
MONITOR_DIR="/var/log"

设置磁盘空间使用率阈值(例如:80%)
THRESHOLD=80

发送警告信息
send_warning() {
local CURRENT_TIME=$(date '+%Y-%m-%d %H:%M:%S')
local USE_RATE=$(df -h "$MONITOR_DIR" | awk 'NR==2 {print $5}' | sed 's/%//g')
echo "警告:$CURRENT_TIME,$MONITOR_DIR 目录磁盘空间使用率超过阈值 $THRESHOLD%,当前使用率为 $USE_RATE%" | mail -s "磁盘空间警告" admin@example.com
}

检查磁盘空间使用情况
check_disk_space() {
local USE_RATE=$(df -h "$MONITOR_DIR" | awk 'NR==2 {print $5}' | sed 's/%//g')
if [ "$USE_RATE" -gt "$THRESHOLD" ]; then
send_warning
fi
}

主函数
main() {
check_disk_space
}

执行主函数
main

2. 使用定时任务

为了实现定期检查磁盘空间,我们可以使用 `cron` 定时任务。以下是如何设置定时任务的示例:

bash
编辑 crontab 文件
crontab -e

添加以下行,实现每小时检查一次磁盘空间
0 /path/to/your/script.sh

3. 日志记录

为了方便后续查看和分析,我们可以将监控结果记录到日志文件中。以下是对脚本进行日志记录的示例:

bash
设置日志文件路径
LOG_FILE="/var/log/disk_space_monitor.log"

在 send_warning 函数中添加日志记录
send_warning() {
local CURRENT_TIME=$(date '+%Y-%m-%d %H:%M:%S')
local USE_RATE=$(df -h "$MONITOR_DIR" | awk 'NR==2 {print $5}' | sed 's/%//g')
echo "警告:$CURRENT_TIME,$MONITOR_DIR 目录磁盘空间使用率超过阈值 $THRESHOLD%,当前使用率为 $USE_RATE%" >> "$LOG_FILE"
echo "警告:$CURRENT_TIME,$MONITOR_DIR 目录磁盘空间使用率超过阈值 $THRESHOLD%,当前使用率为 $USE_RATE%" | mail -s "磁盘空间警告" admin@example.com
}

四、总结

本文介绍了如何使用 Bash 语言编写一个简单的系统磁盘空间监控脚本,并对脚本进行了优化。通过封装函数、使用定时任务和日志记录,我们可以提高脚本的可读性、可维护性和实用性。在实际应用中,可以根据具体需求对脚本进行扩展和定制。