• 使用shell脚本编写监控系统资源(CPU,内存,磁盘)使用情况


     

    🏡作者主页:点击! 

    🛠️Shell编程专栏:点击!

    ⏰️创作时间:2024年6月20日16点30分

    🀄️文章质量:95分


    目录

    ————前言————

    1.本章目标

    2.编写脚本

    1.获取内存使用率

    2.获取根分区磁盘占用率

    3.设置监控阈值

    4.检查CPU使用率

    5.检查内存使用率

    6.检查根分区磁盘使用率

    7.测试


    ————前言————

    在现代计算机系统中,确保系统资源的高效利用和及时响应异常情况至关重要。对于系统管理员和开发人员来说,监控CPU、内存和磁盘使用情况是日常维护的核心任务之一。Shell脚本作为一种强大而灵活的工具,能够帮助我们自动化这些监控任务,实时获取系统资源使用情况,并在资源使用超过设定阈值时及时发出警报。

    1.本章目标

    本篇文章将带领您学习如何编写一个简单但功能强大的Shell脚本,用于监控系统的CPU、内存和根分区磁盘的使用情况。当某项资源的使用率超过预设的警戒值时,脚本将自动发送警报邮件通知相关人员。通过本次学习,您将掌握基础的Shell编程技巧,并能将这些知识应用到实际的系统监控中去。准备好了吗?让我们开始探索Shell编程的世界吧!

    题目

    请编写一个Shell脚本,用于监控系统的CPU、内存和根分区磁盘的使用情况。该脚本需要在资源使用超过设定的阈值时发送警报邮件。

    2.编写脚本

    vim /sysmon.sh

    加入一下内容

    1.获取内存使用率

    使用 free 命令和 awk 命令计算当前的内存使用率,并将其存储在变量 mem 中。

    mem=$(free | grep Mem | awk '{print $3/$2 * 100.0}')

    解释如下:

    1. free:显示系统的内存使用情况。
    2. grep Mem:从 free 的输出中筛选出包含内存信息的那一行。
    3. awk '{print $3/$2 * 100.0}':计算内存使用率,将已用内存除以总内存并乘以100,得到百分比。
    4. mem=$(...):将计算结果存储在变量 mem 中。

    2.获取根分区磁盘占用率

    使用 df -h 命令和 awk 命令获取根分区(/)的磁盘占用率,并将其存储在变量 disk 中。

    disk=$(df -h / | awk 'NR==2 {print $5}' | sed 's/%//')

    解释如下:

    1. df -h /:显示根分区(/)的磁盘使用情况。
    2. awk 'NR==2 {print $5}':提取第二行的第五列数据,即根分区的使用率。
    3. sed 's/%//':去掉使用率百分比后的百分号。
    4. disk=$(...):将结果存储在变量 disk 中。

    3.设置监控阈值

    定义CPU、内存和磁盘使用率的阈值。分别为80%、90%和90%。

    1. cpuce=80
    2. ncce=90
    3. cpce=90

    解释如下:

    1. cpuce=80:设置CPU使用率警戒线为80%。
    2. ncce=90:设置内存使用率警戒线为90%。
    3. cpce=90:设置根分区磁盘使用率警戒线为90%。
    4.检查CPU使用率

    对比CPU使用率与设定的阈值,如果超过80%,则输出警告信息并发送邮件通知。

    1. if (( $(echo "$cpu >= $cpuce" | bc -l) )); then
    2. echo "CPU占用率超过80% ($cpu%)"
    3. echo "CPU占用率超过80%" | mail -s "监控警报" monitor@bdqn.com
    4. else
    5. echo "CPU占用率 $cpu%"
    6. fi

    解释如下:

    • if (( $(echo "$cpu >= $cpuce" | bc -l) )):使用 bc 计算表达式,如果 cpu 大于或等于 cpuce
    • echo "CPU占用率超过80% ($cpu%)":输出警告信息。
    • echo "CPU占用率超过80%" | mail -s "监控警报" monitor@bdqn.com:发送警报邮件。
    • elseecho "CPU占用率 $cpu%":如果 cpu 低于 cpuce,输出当前CPU使用率。
    5.检查内存使用率

    对比内存使用率与设定的阈值,如果超过90%,则输出警告信息并发送邮件通知。

    1. if (( $(echo "$mem >= $ncce" | bc -l) )); then
    2. echo "内存使用率超过90% ($mem%)"
    3. echo "内存使用率超过90%" | mail -s "监控警报" monitor@bdqn.com
    4. else
    5. echo "内存使用率 $mem%"
    6. fi

    解释如下:

    • if (( $(echo "$mem >= $ncce" | bc -l) )):使用 bc 计算表达式,如果 mem 大于或等于 ncce
    • echo "内存使用率超过90% ($mem%)":输出警告信息。
    • echo "内存使用率超过90%" | mail -s "监控警报" monitor@bdqn.com:发送警报邮件。
    • elseecho "内存使用率 $mem%":如果 mem 低于 ncce,输出当前内存使用率。

    6.检查根分区磁盘使用率

    对比根分区磁盘使用率与设定的阈值,如果超过90%,则输出警告信息并发送邮件通知。

    1. if (( $(echo "$disk >= $cpce" | bc -l) )); then
    2. echo "磁盘使用率超过90% ($disk%)"
    3. echo "磁盘使用率超过90%" | mail -s "监控警报" monitor@bdqn.com
    4. else
    5. echo "磁盘使用率 $disk%"
    6. fi

    解释如下:

    • if (( $(echo "$disk >= $cpce" | bc -l) )):使用 bc 计算表达式,如果 disk 大于或等于 cpce
    • echo "磁盘使用率超过90% ($disk%)":输出警告信息。
    • echo "磁盘使用率超过90%" | mail -s "监控警报" monitor@bdqn.com:发送警报邮件。
    • elseecho "磁盘使用率 $disk%":如果 disk 低于 cpce,输出当前磁盘使用率。

    7.测试

    编写完成之后执行测试

     "成功的路上没有捷径,只有不断的努力与坚持。如果你和我一样,坚信努力会带来回报,请关注我,点个赞,一起迎接更加美好的明天!你的支持是我继续前行的动力!"

    "每一次创作都是一次学习的过程,文章中若有不足之处,还请大家多多包容。你的关注和点赞是对我最大的支持,也欢迎大家提出宝贵的意见和建议,让我不断进步。"

    神秘泣男子

  • 相关阅读:
    源码:TMS FlexCel Studio for .NET 7.19
    Metasploit——客户端渗透
    电机剧烈振动的原因及解决办法(附电机振动监测方案)
    【TS】泛型以及多个泛型参数
    名词解析 — — 企业开发中的VO、DTO、BO、PO等
    正大周五数据 主账户的市场有多大?
    React:通过嵌套对象循环
    CodeMirror 创建标签计算编辑器
    解释 Git 的基本概念和使用方式。
    Allegro Design Entry HDL(OrCAD Capture HDL)AMS仿真菜单详细介绍
  • 原文地址:https://blog.csdn.net/jxjdhdnd/article/details/139957892