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 : Sélectionner tout - Visualiser dans une fenêtre à part
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,