Creé un script que verifica el proceso del servidor Apache y envía un correo electrónico si el proceso no funciona.
apache_down=`service httpd status | grep "inactive (dead)"`
echo “$apache_down" | mailx -s “APACHE_DOWN_`hostname`” [email protected]
El script funciona bien cuando se ejecuta manualmente: envía el correo con el asunto y el cuerpo correctos "$apache_down".
Sin embargo, cuando lo coloco en crontab, envía el correo solo con el asunto y no con el cuerpo.
*5 * * * * script.sh >/dev/null 2>&1
El cuerpo está vacío con solo "" . Usé mail -s y el mismo resultado. ¿Es esto un problema con mi script o la configuración de crontab o mailx?
Respuesta1
Comprobar el$RUTAvariable si está configurada correctamente para ejecutar comandos; de lo contrario, configúrela en su secuencia de comandos o, en general, para cron. Si $PATH no está configurado correctamente para binario, entonces,servicioEl comando no se ejecutará o tendrá que agregarlo manualmente ejecutándolo como/usr/sbin/servicio
También intente agregar la verificación si la variable tiene alguna salida dentro del script...
if [[ -n "$apache_down" ]]
then
echo “$apache_down" | mailx -s “APACHE_DOWN_`hostname`” [email protected]
else
echo "apache running fine" | mailx -s “APACHE_Running_`hostname`” [email protected]
fi