Bash 语言 监控服务器磁盘空间脚本

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


Bash脚本监控服务器磁盘空间:实践与优化

在服务器管理中,磁盘空间监控是一个至关重要的任务。及时了解磁盘空间的使用情况,可以帮助管理员避免因磁盘空间不足导致的系统故障和服务中断。Bash脚本因其简单易用、跨平台等特点,成为服务器管理中常用的工具之一。本文将围绕Bash语言,探讨如何编写一个高效、实用的服务器磁盘空间监控脚本。

监控脚本的基本功能

一个基本的磁盘空间监控脚本应具备以下功能:

1. 获取当前磁盘空间使用情况。
2. 判断磁盘空间是否达到预设阈值。
3. 发送警告信息给管理员。

编写监控脚本

以下是一个简单的Bash脚本示例,用于监控服务器磁盘空间:

bash
!/bin/bash

设置磁盘空间阈值(以百分比表示)
THRESHOLD=80

获取根目录的磁盘空间使用情况
USE=$(df / | awk 'NR==2 {print $5}' | sed 's/%//g')

判断磁盘空间是否达到阈值
if [ "$USE" -ge "$THRESHOLD" ]; then
发送警告信息给管理员
echo "警告:服务器根目录磁盘空间使用率已达 $USE%,请及时清理空间。" | mail -s "磁盘空间警告" admin@example.com
fi

脚本优化

1. 定时执行

为了实现实时监控,我们可以使用cron定时任务来定期执行脚本。以下是一个cron任务示例,每天凌晨1点执行监控脚本:

bash
0 1 /path/to/monitor_disk_space.sh

2. 多磁盘监控

在实际应用中,可能需要监控多个磁盘。我们可以修改脚本,使其支持多个磁盘监控:

bash
!/bin/bash

设置磁盘空间阈值(以百分比表示)
THRESHOLD=80

监控的磁盘列表
DISKS="/ /boot /var /home"

遍历所有磁盘
for DISK in $DISKS; do
获取磁盘的磁盘空间使用情况
USE=$(df $DISK | awk 'NR==2 {print $5}' | sed 's/%//g')

判断磁盘空间是否达到阈值
if [ "$USE" -ge "$THRESHOLD" ]; then
发送警告信息给管理员
echo "警告:$DISK 磁盘空间使用率已达 $USE%,请及时清理空间。" | mail -s "磁盘空间警告" admin@example.com
fi
done

3. 日志记录

为了方便后续查看和分析,我们可以将监控结果记录到日志文件中:

bash
!/bin/bash

设置磁盘空间阈值(以百分比表示)
THRESHOLD=80

监控的磁盘列表
DISKS="/ /boot /var /home"

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

遍历所有磁盘
for DISK in $DISKS; do
获取磁盘的磁盘空间使用情况
USE=$(df $DISK | awk 'NR==2 {print $5}' | sed 's/%//g')

判断磁盘空间是否达到阈值
if [ "$USE" -ge "$THRESHOLD" ]; then
记录警告信息到日志文件
echo "$(date) 警告:$DISK 磁盘空间使用率已达 $USE%,请及时清理空间。" >> $LOG_FILE

发送警告信息给管理员
echo "警告:$DISK 磁盘空间使用率已达 $USE%,请及时清理空间。" | mail -s "磁盘空间警告" admin@example.com
fi
done

总结

本文介绍了如何使用Bash语言编写一个简单的服务器磁盘空间监控脚本,并对其进行了优化。通过定时执行、多磁盘监控和日志记录等功能,我们可以实现一个高效、实用的磁盘空间监控方案。在实际应用中,可以根据具体需求对脚本进行修改和扩展。