Problème sur un bash de monitoring
Bonjour,
j'ai créé un bash pour faire du monitoring sur mon serveur, le principe est simple : je lance un "top" toute les x secondes et si le CPU est supérieure à 50% , je reçoit un mail d'alerte.
Le problème est que lorsque le top se lance, la première valeur du CPU est la plus basse (soit 2.4% pour moi), il faut attendre la seconde passe du top pour que la valeur exact s'affiche.
Comme le bash renvoi la première valeur ....
Ci-dessous le bash en question,
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| #!/bin/bash
#monitoring
#alerte mail si charge cpu trop importante
#top -n1 | grep 'Cpu(s)' | awk '{print $2;}' | sed -e "s/[%us,]/ /g" > monitor$
top -b -n1 | awk '/Cpu\(s\)/{ sub("%.*", "", $2); print $2 }' > monitoring_log
var=$(cat monitoring_log)
var=${_var/./,}
vard=50
if [[ "$var" > "$vard" ]]; then
cat monitoring_msg.txt | mail -s "Alerte Serveur Web" -c mail@mail.com
fi |
Merci à vous de votre aide,