Temporizador en script para verificar la utilización de la CPU en Linux

Temporizador en script para verificar la utilización de la CPU en Linux

Estoy buscando una declaración para verificar si la CPU está por encima del 90% durante 10 minutos, si la CPU no baja del 90% durante más de 10 minutos, entonces alerta

Mi guión hasta ahora:

cpu_used = "90"

Tomado deEl guión de Hugh.

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 }'`

ejemplo

    if [ $cpu -ge $cpu_used ] ; then
        echo $cpu
    fi

¿Cómo agregar 10 minutos a la declaración if anterior para verificar si la CPU está por encima del 90% durante más de 10 minutos antes de enviar la alerta? gracias de antemano

Respuesta1

La única forma de lograrlo es registrar la utilización de la CPU durante un intervalo de 10 minutos.

A continuación se explica cómo verificar si su CPU tuvo una utilización superior al 90% durante más de 10 minutos.

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

información relacionada