Problema com o crontab, o script é executado quando executado a partir do comando

2

esta é a minha entrada no cron:

*/5 * * * * /home/user/scripts/backupDB.sh && echo "Backup Successful: $(date)" >> /home/user/tmp/mybackup.log

Este é o script que é chamado:

#!/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
date_now='date +%Y_%m_%d_%H_%M'
dir_name="BU/db_backup"
tar_name="db_backup_${date_now}.tar.gz"
file_name="${dir_name}/${tar_name}"

if [ -z "$dir_name" ]; then
    mkdir $dir_name
fi

log() {
    echo 
}

do_cleanup(){
#    rm -rf db_backup* 
    log 'cleaning up....'
}

do_backup(){
    log 'snapshotting the db and creating archive' && \
    mongodump -o ${HOME}/${dir_name} && tar -cjf ${HOME}/${tar_name} ${HOME}/${dir_name} || \
    log 'data backd up and created snapshot'

    log 'saving the backup archive in amazon S3' && \
    s3cmd put --acl-private ${HOME}/${tar_name} s3://bucket-name/db-backups/${tar_name} && \
    log 'data backup saved in amazon s3'
}


do_backup && do_cleanup

O problema é que esse script funciona na linha de comando, mas não no crontab. Eu dei uma olhada em Razões pelas quais o crontab não funciona , e eu fiz tudo o que é mencionado lá.

Existe alguma maneira de executá-lo via cron?

EDIT: Atualmente estou executando como su -c user Isso representa um problema?

    
por theTuxRacer 02.02.2011 / 18:08

2 respostas

1

Tente alterar seu comando cron para

bash -c '/home/user/scripts/backupDB.sh && echo "Backup Successful: $(date)" >> /home/user/tmp/mybackup.log'

Descobri que agrupar as coisas no bash ajudou os valores do ambiente de configuração no passado. Você pode até mesmo ser capaz de despejar partes do seu script como resultado.

    
por Oli 02.02.2011 / 18:26
-2

Eu acho que há um problema com permissões de script. Você já tentou dar permissão executável para o seu arquivo sh? Eu estava enfrentando o mesmo problema. Quando eu corro através do prompt de comando usando o comando sh, ele foi executado com sucesso. Mas, no crontab, não estava funcionando. Então, eu forneci 777 permissão para script e funcionou através do crontab. Parece que o problema é com o Linux.

    
por Jigir Shah 10.10.2013 / 13:15