腳本中的計時器用於檢查 Linux 中的 cpu 使用率

腳本中的計時器用於檢查 Linux 中的 cpu 使用率

我正在尋找一個語句來檢查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

相關內容