Linux에서 CPU 사용률을 확인하는 스크립트의 타이머

Linux에서 CPU 사용률을 확인하는 스크립트의 타이머

CPU가 10분 동안 90% 이상인지 확인하고, 10분 이상 CPU가 90% 미만이 아니면 경고를 발생시키는 명령문을 찾고 있습니다.

지금까지 내 스크립트는 다음과 같습니다.

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

경고를 보내기 전에 CPU가 10분 이상 90% 이상인지 확인하기 위해 위의 if 문에 10분을 추가하려면 어떻게 해야 합니까? 미리 감사드립니다

답변1

이를 달성하는 유일한 방법은 10분 간격으로 CPU 사용률을 기록하는 것입니다.

CPU 사용률이 10분 이상 90% 이상인지 확인하는 방법은 다음과 같습니다.

#!/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

관련 정보