Por que meu script está morrendo quando executado através do cron?

3

todos! Talvez você possa me ajudar com isso: Eu configurei minha rotação diária de backup no Cron para ser executada todos os dias às 4 da manhã. O script não é complicado (veja abaixo), e quando eu o executo, ele funciona sem problemas. No entanto, quando eu programo no Cron, o script é executado por cerca de meia hora e depois para (sem email, sem aviso, ele simplesmente pára de copiar arquivos em algum momento).

Alguma idéia de por que isso pode estar acontecendo? A pasta de backup tem cerca de 38GB, e leva quase uma hora para o script ser executado. Eu estou supondo algum tipo de limitação de tempo de execução, mas é apenas uma idéia.

Por último, mas não menos importante, este é o script. Mantém uma pasta "arquivo" com 7 backups diários:

#!/bin/bash
NEW='date +%Y%m%d'
NUMBER=7

function erase_old()
{
    while (( $# > $NUMBER )); do
        rm -rf "$1"
        shift
    done
}

mkdir /backup/archive/$NEW
cp -vrp /backup/current/* /backup/archive/$NEW
erase_old /backup/archive/*
    
por Martin 12.01.2010 / 14:22

3 respostas

1

Não tenho certeza porque está morrendo, mas posso sugerir uma abordagem alternativa para seus backups contínuos?

Tente usar em vez da data de hoje , o dia de hoje para o nome do arquivo. Então você nunca terá que deletar os antigos, eles serão apenas sobrescritos. (Ou você pode excluir <today> e depois escrever o novo.)

Para obter o valor de hoje, faça algo como:

$FNAME='date +%A'
    
por 12.01.2010 / 14:34
0

Você está testando a variável $CANT que não está definida em lugar algum.

Gostaria de saber se ulimit -t está atrapalhando.

    
por 12.01.2010 / 15:02
0

Pode ser um problema de permissão; é a entrada crontab sob o mesmo usuário que pode executar o script com sucesso a partir da linha de comando?

    
por 12.01.2010 / 18:49