cette coquille expliquer le problème, après l'exécution de l'arrêt de .sh et rien ne se passe, aucune idée où est mon erreurkillall httpd pour le processus de sommeil
son kill httpd s'il y a plus de 10 processus de sommeil et commencer la httpd avec zéro processus de sommeil
#!/bin/bash
#this means loop forever
while [ 1 ];
do HTTP=`ps auwxf | grep httpd | grep -v grep | wc -l`;
#the above line counts the number of httpd processes found running
#and the following line says if there were less then 10 found running
if [ $[HTTP] -lt 10 ];
then killall -9 httpd;
#inside the if now, so there are less then 10, kill them all and wait 1 second
sleep 1;
#start apache
/etc/init.d/httpd start;
fi;
#all done, sleep for ten seconds before we loop again
sleep 10;done
le rueslt vient de ce type + '[' 1 ']' ++ ++ ps auwxf grep httpd ++ grep -v grep ++ wc -l + HTTP = 72 + '[' 72 -lt 10 ']' + dormir 10 + '[' 1 ']' ++ ++ ps auwxf grep httpd ++ grep -v grep ++ wc -l + HTTP = 70 + '[' 70 -l 10 ']' + sommeil 10 + '[' 1 ']' ++ ps auwxf ++ grep httpd ++ grep -v grep ++ wc -l + HTTP = 67 + '[' 67 -lt 10 ']' + sommeil 10 et n'a jamais tué tous les processus de sommeil httpd tout indice – user172697
Parce que HTTP = 72, par exemple et 72 n'est pas '-lt' 10.Vous testez "less than" ('-lt' signifie" less than "), vos commentaires disent" less than "à deux endroits, mais votre question dit" kill httpd s'il y en a plus de 10 ". Vous devez changer la condition pour laquelle vous testez si vous voulez que cela fonctionne différemment. Sinon, en fonction du script et de la sortie de la trace, cela fonctionne correctement. –