
Creé un script bash que ejecuta copias de seguridad automatizadas de EBS en AWS. Se inicia mediante un cronjob:
0 2 * * * /bin/bash /root/backup_snapshots.sh > backup.log 2>&1
Esto funciona perfectamente, pero lo siguiente que quiero hacer es agregar un código de salida para determinar si el script se ejecuta correctamente o no (para poder configurar una verificación de Nagios). Hay algunas cosas que voy a hacer:
- Cree el archivo backup.log en el directorio /var/log/backup/.
- Configure logrotate para rotarlo diariamente, para que este cheque sea más fácil de detectar.
Pero una pregunta que tengo es: ¿es posible que cron escriba un código de salida en el archivo backup.log que creé? ¿O debería optar por este tipo de implementación?
Cree una entrada crontab con una secuencia de comandos que pueda iniciar la secuencia de comandos real Y tener un código de salida como este:
#!/bin/bash
/root/backup_snapshots.sh 2> /dev/null
if [ $? -eq 0 ]
then
echo "PASS"
else
echo "FAIL" >&2
fi
Quiero hacer esto lo más simple posible, así que si cron puede hacerlo, ¡genial! Si no, ¿lo mejor sería crear un script bash que ejecute backup_snapshots.sh y ejecutarlo mediante cron?
Respuesta1
#!/bin/bash
exec 1>/var/log/backup/backup_sbapshots.log 2>&1
if /root/backup_snapshots.sh
then
echo "PASS"
else
echo "FAIL"
fi
Haga su script cron como se muestra, lo que colocará el estado de ejecución del cronjob en el archivo de registro de respaldo. Tenga en cuenta que no se menciona la $?
variable en ninguna parte, ya que la if
declaración es propia.