Escribí un script bash para reiniciar Apache cuando se colgó y enviar un correo electrónico al administrador. El código se muestra a continuación. el código reiniciará Apache si el número de procesos de Apache es cero. El problema es que Apache se cuelga un poco y los procesos aún no son cero, por lo que en este caso el script no reiniciará Apache. Lo que se necesita es: ¿cómo modifico el código para reiniciar Apache si se colgó y los procesos no son cero?secuencia de comandos bash para reiniciar Apache automáticamente
#!/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
Fijar la enfermedad, no los síntomas. Deberías preguntarte cómo determinar por qué apache se cuelga (probablemente en ServerFault) y luego arreglarlo ... no cómo reiniciarlo cuando se cuelga. – Juliano
¿Por qué reinventó la rueda aquí, las secuencias de comandos de inicio que se encuentran en /etc/rc.d o similar (dependiendo de la instalación de Unix/Linux) tienen la capacidad de reiniciarse, pero luego, revise los registros de errores para saber por qué tiene que reiniciar el servidor, generalmente /etc/rc.d/3/rc.httpd restart o similar ... – t0mm13b
Hola. Juliano, tienes razón. Estoy buscando la causa raíz del problema, pero creo que este tipo de scripts es "imprescindible" porque es posible que en el futuro se bloquee y este script resuelva temporalmente el problema. –