Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/01/2011, 10h03   #1
Invité régulier
 
Inscription : décembre 2010
Messages : 20
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 20
Points : 9
Points : 9
Par défaut Aide script / compter le nombre de process

Bonjour,

J'ai un petit soucis avec un script shell que voici :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash
 
nb_occurence=`ps -edf | grep $1 | grep -v "grep" | wc -l`
 
if [ $nb_occurence -eq 0 ]
then
        echo "CRITICAL : process $1 not running"
        exit 2
else
        if [ $nb_occurence -eq 1 ]
        then
                echo "OK : process $1 running"
        fi
        if [ $nb_occurence -gt 1 ]
        then
                echo "WARNING : plusieurs process $1 running"
                exit 1
        fi
fi
Je souhaite vérifier le nombre de process qui tourne sur ma machine. Le process est placé en argument quand j'appelle le script.

Si j'exécute la commande sans le script, voila ce que cela donne :
# ps -edf | grep httpd | grep -v "grep" | wc -l
10


Si j'exécute mon script en debug, voici ce que j'obtiens :
Code :
1
2
3
4
5
6
7
8
9
# bash -x check_process.sh httpd
++ ps -edf
++ grep httpd
++ grep -v grep
++ wc -l
+ nb_occurence=13
+ '[' 13 -eq 0 ']'
+ '[' 13 -eq 1 ']'
+ '[' 13 -gt 1 ']'
+ echo 'WARNING : plusieurs process httpd running'
WARNING : plusieurs process httpd running
+ exit 1[/CODE]


Au lieu de compter 10 occurrences, mon script en compte 13.

Si quelqu'un a une idée pour corriger cela ?

Merci d'avance.
arso91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2011, 10h38   #2
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 065
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 065
Points : 4 135
Points : 4 135
Bonjour,

bizarre...regarde avec ceci :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/bash
 
[ -n "$1" ] && Process="$1" || exit 1
 
inst=( $(pgrep "$Process") )
 
if (( ${#inst[@]} == 1 ))
then echo "OK : process $1 running"
elif (( ${#inst[@]} > 1 ))
then echo "WARNING : ${#inst[@]} process $1 running"
     exit 1
else echo "CRITICAL : process $1 not running"
     exit 2
fi
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 04/01/2011, 10h44   #3
Invité régulier
 
Inscription : décembre 2010
Messages : 20
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 20
Points : 9
Points : 9
Ton script fonctionne nickel. Mais je ne comprend pas pourquoi pas le mien !!
arso91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2011, 13h22   #4
Invité régulier
 
Inscription : décembre 2010
Messages : 20
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 20
Points : 9
Points : 9
Je reviens sur mon problème de script. J'ai donc testé celui de N_BaH qui fonctionne très bien sous RedHat mais pas sous AIX car il n'y a pas de commande pgrep.

Je m'y connais pas trop en AIX donc si quelqu'un aurait une idée, elle sera la bienvenu !!

Merci
arso91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2011, 14h08   #5
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 065
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 065
Points : 4 135
Points : 4 135
Bonjour,

Les trois occurrences ajoutées sont :
celle du bash -x
celle du script
celle du subshell ` `

Code :
nb_occurence=$(ps -ef | grep $1 | grep -Ev "(grep|$0)" | wc -l)
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/01/2011, 14h41   #6
Invité régulier
 
Inscription : décembre 2010
Messages : 20
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 20
Points : 9
Points : 9
trop bien, ça fonctionne. Merci beaucoup
arso91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h24.


 
 
 
 
Partenaires

Hébergement Web