J'ai écrit un script bash pour redémarrer Apache quand il a pendu et envoyer un courriel à l'administrateur. Le code est montré ci-dessous. le code redémarrera Apache si le nombre de processus Apache est zéro. Le problème est le suivant: Apache se bloque et les processus ne sont toujours pas à zéro, dans ce cas, le script ne redémarrera pas Apache. Le nécessaire est: comment puis-je modifier le code pour redémarrer Apache s'il a pendu et les processus ne sont pas zéro.script bash pour redémarrer Apache automatiquement
#!/bin/bash
if [ `pgrep apache2 -c` -le "0" ]; then
/etc/init.d/apache2 stop
pkill -u www-data
/etc/init.d/apache2 start
echo "restarting....."
SUBJECT="Apache auto restart"
# Email To ?
EMAIL="[email protected]"
# Email text/message
EMAILMESSAGE="apache auto restart done"
# send an email using /bin/mail
/bin/mail -s "$SUBJECT" "$EMAIL" "$EMAILMESSAGE"
fi
Fix la maladie, et non les symptômes. Vous devriez demander comment déterminer pourquoi Apache est suspendu (probablement dans ServerFault) et puis corriger cela ... pas comment le redémarrer quand il se bloque. – Juliano
Pourquoi avez-vous réinventé la roue ici, les scripts de démarrage trouvés dans /etc/rc.d ou similaire (en fonction de l'installation unix/linux) ont la possibilité de redémarrer, mais encore une fois, consultez vos journaux d'erreurs pour savoir pourquoi avoir à redémarrer le serveur, habituellement/etc/rc.d/3/rc.httpd redémarrer ou similaire ... – t0mm13b
Salut. Juliano tu as raison. Je suis à la recherche de la cause première du problème mais je pense que ce genre de scripts est un "must have" car il est possible qu'à l'avenir il se bloque et que ce script résout temporairement le problème. –