Cómo leer el estado del servicio en un script bash

Cómo leer el estado del servicio en un script bash

He escrito un script para monitorear un servicio específico en mi VPS. Ese servicio (clamd.amavisd) tiende a encontrarse inesperadamente inactivo y, cuando lo hace, mi servicio de correo electrónico básicamente se detiene.

Utilizo las siguientes instrucciones en el script:

STATUS_QUERY_RESULT_STRING=$(service $SERVICE_NAME status)

El problema es que, cuando se ejecuta desde la terminal, el script recibe algo en esa variable (lo he repetido en un archivo para saberlo) pero desafortunadamente para mí, cuando se ejecuta en un trabajo cron, la variable está vacía.

Es obvio que estoy haciendo algo mal. ¿Hay algún factor que no estoy teniendo en cuenta?

Respuesta1

ABSOLUTAMENTE todo desde lo que ejecuta crondebe tener rutas absolutas porque cronusar una parte mínima de variables de entorno

   STATUS_QUERY_RESULT_STRING=$(/full/path/to/service $SERVICE_NAME status)

De hecho, puede configurar en su script las RUTAS más importantes que necesita como

   PATH=/bin:/usr/local/sbin 

pero si algún día no descubre que, por ejemplo, lo esperado lses en realidad la caída de un hacker malicioso, utilice siempre rutas absolutas.

Asigne al comienzo de su script que está dispuesto a usar algo así.

   CAT='/bin/cat'
   LS='/bin/ls'

y usarlo como

  $LS -la /some/path
  $CAT /etc/passwd

información relacionada