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,
Merci à vous de votre aide,
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
Partager