Linux磁盘空间监控脚本

监控Linux下指定目录的磁盘空间使用情况,并在达到预设阈值时触发报警的shell脚本。

假设有一个名为disk_monitor_config.txt的配置文件,用于设置需要监控的目录以及对应的阈值。每行配置的格式为目录=阈值,例如/var/log=90表示监控/var/log目录,当磁盘空间使用率达到90%时触发报警。

#!/bin/bash

# 配置文件路径
config_file="disk_monitor_config.txt"

# 日志文件路径
log_file="disk_monitor.log"

# 读取配置文件
read_config() {
    local key_space=$1
    local threshold=$2
    while IFS= read -r line; do
        local key=$(echo "$line" | awk -F '=' '{print $1}')
        local value=$(echo "$line" | awk -F '=' '{print $2}')
        if [ "$key" = "$key_space" ]; then
            threshold=$value
            break
        fi
    done < "$config_file"
    echo "$threshold"
}

# 检查磁盘空间使用情况并触发报警
check_disk_space() {
    local key_space=$1
    local threshold=$(read_config "$key_space" 80)  # 默认阈值为80%
    local current_space=$(df -h "$key_space" | awk 'NR==2{print $5}' | tr -d '%')
    
    if [ "$current_space" -ge "$threshold" ]; then
        echo "磁盘空间已超过阈值!目录: $key_space,当前使用率: $current_space%"
        echo "$(date '+%Y-%m-%d %H:%M:%S') - 目录: $key_space,当前使用率: $current_space%" >> "$log_file"
        # 在此处触发报警的操作,例如发送邮件或其他通知方式
    else
        echo "磁盘空间正常。目录: $key_space,当前使用率: $current_space%"
        echo "$(date '+%Y-%m-%d %H:%M:%S') - 目录: $key_space,当前使用率: $current_space%" >> "$log_file"
    fi
}

# 主程序入口
main() {
    while IFS= read -r line; do
        check_disk_space "$line"
    done < "$config_file"
}

# 执行主程序
main

while循环用于读取配置文件中的每一行,并逐行调用check_disk_space函数来检查磁盘空间使用情况并触发报警。

  • while关键字开始一个循环,它会不断读取配置文件中的每一行。 IFS=的作用是将输入字段分隔符(Input Field Separator)设置为空,这样可以确保读取到完整的行内容,而不会因为默认的字段分隔符而被截断。
  • read -r line将每一行内容读取到变量line中,-r选项会禁用对反斜杠的转义解释。
  • check_disk_space "$line"调用check_disk_space函数,并将当前行内容作为参数传递给它。
  • done表示循环的结束。

因此,整个while循环的作用是遍历配置文件中的每一行,并将每一行作为参数传递给check_disk_space函数进行处理。

在check_disk_space函数中,我们根据配置文件中的目录和阈值设置来检查磁盘空间使用情况,并根据需要触发报警。每次循环迭代都会处理一个目录,并基于其阈值进行判断。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值