O shebang que precisa ser escrito inclui um ponto de exclamação.
Tente escrever #!/bin/bash
na primeira linha do seu script de shell.
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?
O shebang que precisa ser escrito inclui um ponto de exclamação.
Tente escrever #!/bin/bash
na primeira linha do seu script de shell.