Programmation script shell ksh unix

Fermé
Gourou Dsecours Messages postés 5 Date d'inscription vendredi 9 octobre 2009 Statut Membre Dernière intervention 9 octobre 2009 - 9 oct. 2009 à 13:47
dubcek Messages postés 18767 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 5 mars 2025 - 9 oct. 2009 à 16:12
Bonjour à tous,

Je développe une fonction pour un script shell sous ksh qui doit me renvoyer le nombre d'instances du programme principal en cours de traitement, et s'arrêter si ce nombre est supérieur à 1.

Relativement simple, pensai-je.

Seulement voilà, les résultats que j'obtiens sont différents de ce que je suis en droit d'attendre. Le nombre de processus que j'obtiens en résultat est souvent supérieur ou inférieur.

J'ai probablement dû me tromper quelque part, mais impossible de trouver où est mon erreur !

Même en appelant deux fois mon calcul, je n'ai pas deux fois le même résultat !

Toute aide est la bienvenue !

Mon code :


function NombreDeProcessus
{
PROCESSUS=$1 ;
VAL_1=`ps -eo args | grep -F "${PROCESSUS}" | grep -vF "grep" | wc -l | tr -d [:blank:]`;
VAL_2=$(ps -eo args | grep -F "${PROCESSUS}" | grep -vF "grep" | wc -l | tr -d [:blank:]);
echo "Valeur 1 : '$VAL_1'" ;
echo "Valeur 2 : '$VAL_2'" ;
return $VAL_2;
}
A voir également:

6 réponses

dubcek Messages postés 18767 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 5 mars 2025 5 628
9 oct. 2009 à 15:04
hello
est-ce que la différence est toujours la même ?
et avec cette commande :
VAL_1=`ps -eo args|awk '/awk/ {next};/'"${PROCESSUS}"'/ {x++};END{print x}'`;
VAL_2=$(ps -eo args|awk '/awk/ {next};/'"${PROCESSUS}"'/ {x++};END{print x}');
0
Gourou Dsecours Messages postés 5 Date d'inscription vendredi 9 octobre 2009 Statut Membre Dernière intervention 9 octobre 2009
9 oct. 2009 à 15:36
Merci pour ta réponse,

Je vais essayer ta solution, même si je suis un peu découragé, pour déjà avoir essayé plusieurs variantes utilisant AWK.

La différence entre les deux valeurs n'est pas toujours la même :
- parfois, les deux me donnent une solution juste
- parfois seulement l'une des deux me donne le bon résultat
- parfois, aucune des deux ne me donne le nombre correct de processus.

Pour compléter, je précise que le nom de processus est caractéristique, unique dans le système, et comme je suis root de ma machine, il n'y a pas de processus "non contrôlé" qui se lancerait à l'insu de mon plein gré.

Par ailleurs, mon script ne crée pas de processus fils, donc il n'y a pas de confusion possible avec des fils non contrôlés.
0
dubcek Messages postés 18767 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 5 mars 2025 5 628
9 oct. 2009 à 15:42
sur quel OS ?
0
Kharec Messages postés 4146 Date d'inscription dimanche 20 avril 2008 Statut Contributeur Dernière intervention 8 mai 2011 510
9 oct. 2009 à 15:43
Sûrement un GNU/Linux, un BSD ou un Unix-Like!
0
Gourou Dsecours Messages postés 5 Date d'inscription vendredi 9 octobre 2009 Statut Membre Dernière intervention 9 octobre 2009
9 oct. 2009 à 15:44
AIX 5.3
0
Kharec Messages postés 4146 Date d'inscription dimanche 20 avril 2008 Statut Contributeur Dernière intervention 8 mai 2011 510 > Gourou Dsecours Messages postés 5 Date d'inscription vendredi 9 octobre 2009 Statut Membre Dernière intervention 9 octobre 2009
9 oct. 2009 à 15:48
Okay. Joli système, soi dit au passage.
0
dubcek Messages postés 18767 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 5 mars 2025 5 628
9 oct. 2009 à 15:48
et en utilisant ps -eo comm plutot que args ?
0
Gourou Dsecours Messages postés 5 Date d'inscription vendredi 9 octobre 2009 Statut Membre Dernière intervention 9 octobre 2009
9 oct. 2009 à 15:51
Encore une variante possible... J'avais aussi essayé avec ps -ef.... Peu importe. Quand j'entre les commandes manuellement, ça marche nickel, j'ai direct les bons résultats.

C'est lorsque je les lance depuis un script que mes résultats semblent devenir plus ... aléatoires.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dubcek Messages postés 18767 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 5 mars 2025 5 628
9 oct. 2009 à 15:57
bizarre, rien dans le reste du script qui puisse faire varier le nombre de processes ?
0
Gourou Dsecours Messages postés 5 Date d'inscription vendredi 9 octobre 2009 Statut Membre Dernière intervention 9 octobre 2009
9 oct. 2009 à 16:03
En fait, à la base, pour l'instant, le script ne contient que ce code-là.

Absolument rien d'autre. J'ai développé cette fonctionnalité de façon indépendante, et je la teste de façon indépendante des éventuels autres scripts dans lesquels elle pourrait s'insérer.
0
dubcek Messages postés 18767 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 5 mars 2025 5 628
9 oct. 2009 à 16:12
et en exécutant manuellement les 2 commandes mais sur la même ligne pour qu'elles s'exécutent très rapidement l'une après l'autre
VAL_1=`ps -eo args...; VAL_2=$(ps -eo args...

il faut enlever ' (simple quote), le $ n'est pas traité entre ' '
echo "Valeur 1 : '$VAL_1'" ;
echo "Valeur 2 : '$VAL_2'" ;
0