使用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.编写脚本

bash 复制代码
vim /sysmon.sh

加入一下内容

1.获取内存使用率

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

bash 复制代码
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 中。

bash 复制代码
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%。

bash 复制代码
cpuce=80
ncce=90
cpce=90

解释如下:

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

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

bash 复制代码
if (( $(echo "$cpu >= $cpuce" | bc -l) )); then
    echo "CPU占用率超过80% ($cpu%)"
    echo "CPU占用率超过80%" | mail -s "监控警报" monitor@bdqn.com
else
    echo "CPU占用率 $cpu%"
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%,则输出警告信息并发送邮件通知。

bash 复制代码
if (( $(echo "$mem >= $ncce" | bc -l) )); then
echo "内存使用率超过90% ($mem%)"
echo "内存使用率超过90%" | mail -s "监控警报" monitor@bdqn.com
else
echo "内存使用率 $mem%"
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%,则输出警告信息并发送邮件通知。

bash 复制代码
if (( $(echo "$disk >= $cpce" | bc -l) )); then
echo "磁盘使用率超过90% ($disk%)"
echo "磁盘使用率超过90%" | mail -s "监控警报" monitor@bdqn.com
else
echo "磁盘使用率 $disk%"
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.测试

编写完成之后执行测试

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

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

神秘泣男子

相关推荐
守望时空3322 分钟前
Linux挂载NTFS分区指南
linux
逆小舟1 小时前
【C/C++】指针
c语言·c++·笔记·学习
shan~~1 小时前
linux达梦数据库操作
linux·数据库·chrome
liliangcsdn1 小时前
LLM时代基于unstructured解析非结构化pdf
linux·服务器·数据分析
Codigger官方2 小时前
Linux 基金会牵头成立 React 基金会:前端开源生态迎来里程碑式变革
linux·前端·react.js
武文斌772 小时前
项目学习总结:LVGL图形参数动态变化、开发板的GDB调试、sqlite3移植、MQTT协议、心跳包
linux·开发语言·网络·arm开发·数据库·嵌入式硬件·学习
爱吃喵的鲤鱼2 小时前
仿mudou——Connection模块(连接管理)
linux·运维·服务器·开发语言·网络·c++
递归不收敛2 小时前
吴恩达机器学习课程(PyTorch适配)学习笔记:1.3 特征工程与模型优化
pytorch·学习·机器学习
让子弹飞022 小时前
永久解决ubuntu网络连接问题
linux·运维·ubuntu
郝学胜-神的一滴2 小时前
使用Linux的read和write系统函数操作文件
linux·服务器·开发语言·数据库·c++·程序人生·软件工程