![脚本中的计时器用于检查 Linux 中的 cpu 利用率](https://linux22.com/image/192011/%E8%84%9A%E6%9C%AC%E4%B8%AD%E7%9A%84%E8%AE%A1%E6%97%B6%E5%99%A8%E7%94%A8%E4%BA%8E%E6%A3%80%E6%9F%A5%20Linux%20%E4%B8%AD%E7%9A%84%20cpu%20%E5%88%A9%E7%94%A8%E7%8E%87.png)
我正在寻找一个语句来检查CPU是否在90%以上持续10分钟,如果CPU没有低于90%超过10分钟,则发出警报
到目前为止我的脚本:
cpu_used = "90"
取自休的剧本
cpu=`top -b -n2 -p 1 | fgrep "Cpu(s)" | tail -1 | awk -F'id,' -v prefix="$prefix" '{ split($1, vs, ","); v=vs[length(vs)]; sub("%", "", v); printf "%s%.1f%%\n", prefix, 100 - v }'`
例子
if [ $cpu -ge $cpu_used ] ; then
echo $cpu
fi
如何在上面的 if 语句中添加 10 分钟,以在发送警报之前检查 cpu 是否高于 90% 超过 10 分钟?先感谢您
答案1
实现此目的的唯一方法是记录 10 分钟间隔内的 CPU 利用率。
以下是如何检查您的 CPU 利用率是否超过 90% 且持续时间超过 10 分钟。
#!/bin/bash
starttime=$(date +%s)
cpu_used=90
retval="Over 90% for 10 min"
while [ $(($(date +%s) - $starttime)) -le 600 ]
do
cpu=`top -b -n2 -p 1 | fgrep "Cpu(s)" | tail -1 | awk -F'id,' -v prefix="$prefix" '{ split($1, vs, ","); v=vs[length(vs)]; sub("%", "", v); printf "%s%.1f%%\n", prefix, 100 - v }'`
cpu=${cpu::-1}
cpu=${cpu%.*}
# If at any time the current cpu utilization is below the threshold, exit.
if [ $cpu -le $cpu_used ] ; then
retval="Not over 90% for 10 min"
break
fi
# Longer you sleep, less resource intensive. However, longer sleep decreases the accuracy.
sleep 1
done
echo $retval