1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
|
#!/bin/bash
clear
# effacement du précédant fichier top.log
rm -f /siegelog/tmp/cpu.log 2> /dev/nul
rm -f /siegelog/tmp/mem.log 2> /dev/nul
rm -f /siegelog/tmp/result.log 2> /dev/nul
# boucle de temporisation
echo -e "attente de 60 sec afin de stabiliser la prise de mesure CPU+Mémoire\n"
sleep 1
echo -e "charges CPU+Mémoire stabilisées, début du test\n"
# lancement de 2 TOP en tache de fond
# rafraichissement toutes les 0.5 secondes
# exportation des données CPU dans /siegelog/tmp/cpu.log
top -d 0.5 -b | grep "load average" >> /siegelog/tmp/cpu.log &
# exportation des données Mémoires dans /siegelog/tmp/mem.log
top -d 0.5 -b | grep "Mem:" >> /siegelog/tmp/mem.log &
echo "enregistrement de données dans les log : initialisé"
# temporisation de 0.5 sec afin d'avoir une mesure avant le début du test avec SIEGE
sleep 0.5
# lancement du test avec SIEGE
siege -d0 -r100 -c30 -l/siegelog/tmp/result.log http://127.0.0.1:80
# recherche des 2 processus TOP avec une boucle while et arret (destruction)
# rappel, les quotes inversés indiquent à Bash d'executer
i=1
while [ $i -le 2 ]
do
#echo -e "test suppression process $i\n"
pidtop=`ps aux | grep "top -d 0.5" | awk -F' ' '{ print $2 }' | head -n1`
kill -9 $pidtop
let i=$i+1
done
# verification que TOP a bien été arreté
echo "vérification des processus top actifs en tache de fond"
ps aux | grep "top -d 0.5"
# ***************************************************************
# traitement des logs temporaires
lignecpu=`cat /siegelog/tmp/cpu.log | wc -l`
echo "il y a $lignecpu lignes"
# recupération des valeurs cpu+ram de la 1ere ligne des logs
basecpu=`cat /siegelog/tmp/cpu.log | awk 'NR==1 {print}' | awk -F, '{print $4}' | awk -F' ' '{print $3}'`
baseram=`cat /siegelog/tmp/mem.log | awk 'NR==1 {print}' | awk -F, '{print $3}' | awk -F' ' '{print $1}' | sed s/k/''/`
echo "valeur de base CPU = $basecpu"
echo "valeur de base RAM = $baseram"
for ((j=1; j<=$lignecpu; j+=1))
do
# echo "n° de ligne = $j"
toto=`cat /siegelog/tmp/cpu.log | awk 'NR==$j {print}'`
# ******************* c'est ici que ça merdouille : $j reste vide, et le echo de $toto ci-dessous affiche des lignes blanches (vides) ****************
echo "$toto"
done # positionnement temporaire, ce DONE sera a déplacer apres la concaténation des résultats une fois les prbs résolus
# ************ NR==10 est une valeur temporaire à remplacer par NR==$j si on trouve une soluce *********
# recup de l'heure
heure=`cat /siegelog/tmp/cpu.log | awk 'NR==10 {print}' | awk -F' ' '{print $3}'`
# recup du load-average
loadcpu=`cat /siegelog/tmp/cpu.log | awk 'NR==10 {print}' | awk -F, '{print $4}' | awk -F' ' '{print $3}'`
# recup de la charge mémoire
loadmem=`cat /siegelog/tmp/mem.log | awk 'NR==10 {print}' | awk -F, '{print $3}' | awk -F' ' '{print $1}' | sed s/k/''/`
let consocpu=loadcpu-basecpu
let consoram=baseram-loadmem
# ******* erreur avec le calcule de consocpu, je ne comprend pas pkoi car ça marche tres bien pour consoram *******
echo "concaténation = heure:$heure - CPU:$consocpu - RAM:$consoram ko"
# concaténation à exporter dans un fichier LOG définitif et nominatif
# sortie
echo -e "\n *** fin du script ***\n"
exit |
Partager