Bonjour,

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

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