En tenant compte de ce qui a été dit plus haut, j'ai un peu modifié ton script.
Déjà, on récupère séparément le nom du process et le nombre d'occurence.
Ensuite, on utilise " $param$" plutôt que $param (en mettant bien un espace entre " et $param) dans le grep pour être sûr de tomber sur le bon nom de process.
Et surtout, on appelle wc -l pour compter le nombre d'occurences qui fonctionnent, plutôt que de savoir qu'il y en a sans en connaître le nombre.
Avec ça, on peut voir s'il manque des occurences ou dire s'il y en a de trop.
Ça donne ceci :
#!/bin/bash
cat fichier_param | while read param nb
do
nb_running=$(ps -A | grep " $param$"|wc -l)
if test $nb_running -lt $nb
then
echo "`date "+%d/%m/%y"` $(($nb-$nb_running)) Process manquant(s) $param" >>Alarme.log
elif test $nb_running -gt $nb
then
echo "`date "+%d/%m/%y"` $(($nb_running-$nb)) Process supplementaire(s) $param" >>Alarme.log
fi
done
(dans les commentaires, le code n'est pas très clair parce que les indentations sont supprimées. Y'a un truc pour pouvoir les entrer correctement ?)
Voilà, j'espère que ça va t'aider.
Article Quarante-Deux : Toute personne dépassant un kilomètre de haut doit quitter le Tribunal. -- Le Roi de Cœur
[^] # Re: Guillemet manquant
Posté par zebra3 . En réponse au message Script shell de surveillance de process ?? Besoin de votre aide. Évalué à 1.
En tenant compte de ce qui a été dit plus haut, j'ai un peu modifié ton script.
Déjà, on récupère séparément le nom du process et le nombre d'occurence.
Ensuite, on utilise " $param$" plutôt que $param (en mettant bien un espace entre " et $param) dans le grep pour être sûr de tomber sur le bon nom de process.
Et surtout, on appelle wc -l pour compter le nombre d'occurences qui fonctionnent, plutôt que de savoir qu'il y en a sans en connaître le nombre.
Avec ça, on peut voir s'il manque des occurences ou dire s'il y en a de trop.
Ça donne ceci :
#!/bin/bash
cat fichier_param | while read param nb
do
nb_running=$(ps -A | grep " $param$"|wc -l)
if test $nb_running -lt $nb
then
echo "`date "+%d/%m/%y"` $(($nb-$nb_running)) Process manquant(s) $param" >>Alarme.log
elif test $nb_running -gt $nb
then
echo "`date "+%d/%m/%y"` $(($nb_running-$nb)) Process supplementaire(s) $param" >>Alarme.log
fi
done
(dans les commentaires, le code n'est pas très clair parce que les indentations sont supprimées. Y'a un truc pour pouvoir les entrer correctement ?)
Voilà, j'espère que ça va t'aider.
Article Quarante-Deux : Toute personne dépassant un kilomètre de haut doit quitter le Tribunal. -- Le Roi de Cœur