J'essaye d'écrire un script qui compte le nombre de processus en cours d'exécution correspondant à un patern. Si elle dépasse une valeur codée en dur, alors faites quelque chose ... sinon faites autre chose.Script Bash avec if/else de base et nombre de processus en cours d'exécution basé sur un pattern
Je trouve le nombre de processus en utilisant:
ps ax | grep process_name | wc -l | sed -e "s: ::g"
Si la sortie de la commande ci-dessus est supérieure à 15..it devrait echo « Terminé ». Sinon, écho "Non terminé".
Jusqu'à présent, j'ai cela, mais il ne fonctionne pas:
numprocesses=ps ax | grep sms_queue | wc -l | sed -e "s: ::g"
if [ $numprocesses -le "15" ] ; then
echo "Done."
else
echo "Not Complete."
fi
Comme cette réponse répertorie toutes sortes d'améliorations en plus de l'erreur primaire, je voudrais ajouter la suggestion d'utiliser une expression arithmétique: 'if (($ numprocesses> 15)); alors ... " C'est plus agréable à lire. – MForster
@paxdiablo: ne pensez-vous pas vraiment que * chaîne * "15" est différente de votre * numéro * 15? :) –
@MForster: c'est encore moins portable que '[[]]' stuff.Je conseillerais d'utiliser le vieux '' aka 'test'. –