Loading... ## 前言 博主一直想要一个CPU利用率的监控脚本 但是一直没写 一天想起用SHELL脚本写一个 我写的是shell脚本,所以只能在Linux系统运行 ## 正文 我们新建一个脚本,我取名Detect.sh ```bash vim Detect.sh ``` 没有vim的CentOS系列使用 ```bash yum install vim ``` Ubuntu系列用 ```bash apt install vim ``` 输入 ```bash #!/bin/bash while true do CPU=0 for((i=1;i<=10;i++)); do CpuIdle=$(vmstat 1 5 | sed -n '3,$p' | awk '{x = x + $15} END {print x/5}' | awk -F. '{print $1}') CpuNum=$(echo "100-$CpuIdle" | bc) if [ $CpuNum -gt 80 ]; then { CPU = $[$CPU + 1] echo "$(date +[%Y-%m-%d-%H-%M-%S])BAD" } else { echo "$(date +[%Y-%m-%d-%H-%M-%S])OK" } fi done if [ $CPU -gt 8 ]; then { echo "$(date +[%Y-%m-%d-%H-%M-%S])STOP" //放入你的 停止网站 or 服务器的命令 } else { echo "$(date +[%Y-%m-%d-%H-%M-%S])$((10-$CPU))OK" } fi done ``` ## 原理解释 不想看的就去部署吧 ```bash #!/bin/bash while true //无限循环 do //循环开始 CPU=0 //记录十次统计中多少次系统CPU利用率超过80% for((i=1;i<=10;i++)); //循环十次 do //循环开始 CpuIdle=$(vmstat 1 5 | sed -n '3,$p' | awk '{x = x + $15} END {print x/5}' | awk -F. '{print $1}') CpuNum=$(echo "100-$CpuIdle" | bc) //将CPU利用转换成数字 如:16 (%) if [ $CpuNum -gt 80 ]; then //是否超过80% { CPU = $[$CPU + 1] //CPU值加一 echo "$(date +[%Y-%m-%d-%H-%M-%S])BAD" //输出日志 } else { echo "$(date +[%Y-%m-%d-%H-%M-%S])OK" //输出日志 } fi //if结束 done //十次循环结束 if [ $CPU -gt 8 ]; then { echo "$(date +[%Y-%m-%d-%H-%M-%S])STOP" //放入你的 停止网站 or 服务器的命令 } else { echo "$(date +[%Y-%m-%d-%H-%M-%S])$((10-$CPU))OK" //$((10-$CPU))将多少次超过80%转换为多少次没超过80 输出日志 } fi //if结束 done //无限循环结束 //$(date +[%Y-%m-%d-%H-%M-%S])为输出时间,如 [2020-08-22-20-52-52] ``` ## 后记 对了,日志会有点多可以改一下`echo`的内容 博主不是很会shell脚本,所以有错误请指教 有些代码来自网络,如有侵权请留言 Gitee https://gitee.com/zi_gao/Linux-Detect GitHub https://github.com/Zi-Gao/Linux-Detect/ Last modification:July 8, 2022 © Allow specification reprint Support Appreciate the author AliPayWeChat Like 0 大哥给点钱吧~ヽ(・ω・´メ)(微信 支付宝 QQ都是一个码哦~