crontab agendou erro de script

0

Estou tentando agendar esse script para ser executado todos os dias usando crontb:

#/bin/bash
cd /home/banana/gdrive
DATE='date +%Y-%m-%d'
mongodump  --gzip --archive=$DATE
./gdrive upload ./$DATE

olddate="$(date "+%Y-%m-%d" -d "9 days ago")"
old2=$(date -d $olddate +%s)
#echo $old2
list="$(./gdrive list)"
#echo $list
ADDR=(${list// / })
ii=0
for i in "${ADDR[@]:5}"; do
    if [ $(($ii % 7)) -eq 0 ]; then
       id=$i
    fi
    if [ $(($ii % 7)) -eq 1 ]; then
       name=$i
       dat=$(date -d $name +%s)
       #echo $dat
       if [ $old2 -ge $dat ]; then
          echo "delete"
          echo $id
          touch $id
          ./gdrive delete $id
       fi
       #echo "name"
       #echo $name
       #echo $id
    fi
    #echo $ii
    #echo $i
    let ii=ii+1
done

entrada crontab:

0 2 * * * /home/banana/gdrive/upload.sh

o script roda bem se for almoçado em um console bash, se ele for executado pelo crontab, ele não chegará ao fim, mesmo que eu não consiga encontrar nenhum erro registrado em lugar algum.

Simulando o uso do ambiente crontab conforme sugerido aqui: link

eu descobri que a execução resulta em um erro:

gdrive/upload.sh: 12: gdrive/upload.sh: Syntax error: "(" unexpected

dado o fato de que a variável SHELL no ambiente crontab foi configurada para SHELL = / bin / sh e que a sintaxe lá é bash, esse som é bastante razoável (mesmo que eu ainda esteja confuso sobre o papel do # / bin / bash na primeira linha do script).

O problema é que o mesmo resultado ainda depois de colocar SHELL = / bin / bash no arquivo crontab.

Então a questão é: o que há de errado nessa configuração? e como posso agendar esse script usando o crontab?

    
por bn89 02.10.2016 / 12:08

1 resposta

2

O shebang que precisa ser escrito inclui um ponto de exclamação.

Tente escrever #!/bin/bash na primeira linha do seu script de shell.

    
por torusJKL 02.10.2016 / 12:31