bash
(ao contrário de ksh93
ou zsh
1 ) não pode fazer aritmética de ponto flutuante. awk
pode, então você pode fazer a coisa toda em awk
.
Além disso, você não precisa usar top
(e esperar 1 segundo) para obter a carga. A maneira canônica de obter a carga é de uptime
.
uptime | awk '{load=+$(NF-2)}
load > 2 {print "CRITICAL: " load; exit 2}
load > 1 {print "WARNING: " load; exit 1}
{print "OK: " load; exit 0}
END {if (!NR) {print "UNKNOWN"; exit 3}'
exit
1 Em zsh
, você precisa usar a sintaxe (( loadavg > 2 ))
em vez de [ "$loadavg" -gt 2 ]
para comparar não-inteiros