Cronjob parou de funcionar sem uma dica

0

Temos alguns scripts bash que criam o backup de nossos sistemas. Esses scripts são registrados no crontab e estavam trabalhando por meses sem nenhum problema.

Um dos scripts parou de funcionar de um dia para o outro. Eu posso ver nos logs que a entrada crontab foi executada, mas a ação que está definida no arquivo bash não é executada. Os outros foram executados normalmente.

Se eu executar o script manualmente, ele será executado normalmente. Alguém sabe como resolver esse problema?

#!/bin/bash

SAVE_BACKUPS_DAYS_NUMBER=3
START_BACKUP_DELETION_DAYS_NUMBER=$((SAVE_BACKUPS_DAYS_NUMBER-1))
BACKUPS_LOCATION=/mnt/BACKUP/someApp
DELETE_ALL_BACKUPS_OLDER_THEN_DAYS_NUMBER=30
NUMBER_OF_BACKUPS=$(find $BACKUPS_LOCATION -mtime -$SAVE_BACKUPS_DAYS_NUMBER -type f -name "*.tar.gz" | wc -l)
LOG_FILE=/mnt/BACKUP/logs/housekeeping/housekeeping_someapp_$(date +"%Y-%m-%d").log
SAVE_BACKUP_DAY=Sat

echo "[$(date)]         START Housekeeping" >> $LOG_FILE
echo "[$(date)]         Backups location: $BACKUPS_LOCATION" >> $LOG_FILE
echo "[$(date)]         Number of backups in last $SAVE_BACKUPS_DAYS_NUMBER days: $NUMBER_OF_BACKUPS" >> $LOG_FILE

echo "NUMBER OF BACKUPS: $NUMBER_OF_BACKUPS AND SAVE BACKUPS DAYS -> $SAVE_BACKUPS_DAYS_NUMBER" >> $LOG_FILE

if [ "$NUMBER_OF_BACKUPS" -eq  "$SAVE_BACKUPS_DAYS_NUMBER" ];
then
        echo "[$(date)]         Proper number of backups found!" >> $LOG_FILE


        echo "[$(date)]         DELETE BACKUPS OLDER THEN $START_BACKUP_DELETION_DAYS_NUMBER DAYS. LEAVE BACKUPS CREATED ON $SAVE_BACKUP_DAY" >> $LOG_FILE
        for file in 'find $BACKUPS_LOCATION -mtime +$START_BACKUP_DELETION_DAYS_NUMBER -type f -name "*.tar.gz" -printf '%Ta\t%p\n' | egrep -v "^($SAVE_BACKUP_DAY)" | awk '{print $2}''
                do
                        echo "recent backup delete: " $file >> $LOG_FILE
                        rm $file
                done

        echo "[$(date)]         DELETE ALL BACKUPS OLDER THEN $DELETE_ALL_BACKUPS_OLDER_THEN_DAYS_NUMBER DAYS" >> $LOG_FILE
        for file in 'find $BACKUPS_LOCATION -mtime +$DELETE_ALL_BACKUPS_OLDER_THEN_DAYS_NUMBER -type f -name "*.tar.gz"'
                do
                        echo "old backup delete: " $file >> $LOG_FILE
                        rm $file
                done

        echo "[$(date)]         END Housekeeping" >> $LOG_FILE

else
        echo "ERROR: Not all backups found! In last $SAVE_BACKUPS_DAYS_NUMBER days only $NUMBER_OF_BACKUPS backups found!" >> $LOG_FILE
fi;

E a entrada do crontab

00 3 * * * /mnt/BACKUP/housekeeping_someapp.sh 2>> "/mnt/BACKUP/logs/housekeeping/error_someapp_$(date +\%Y-\%m\-\%d).log"
    
por Kaffi 21.11.2017 / 12:57

0 respostas