Я пытаюсь запланировать этот сценарий для выполнения каждый день при помощи 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
запись crontab:
0 2 * * * /home/banana/gdrive/upload.sh
сценарий хорошо работает, если накормлено обедом в консоли удара, если он выполняется crontab, он не достигает конца, даже если я не могу найти какую-либо зарегистрированную ошибку где-нибудь.
Путем моделирования использования crontab среды, как предложено здесь: https://serverfault.com/questions/85893/running-a-cron-job-manually-and-immediately/85906
я узнал, что выполнение приводит к ошибке:
gdrive/upload.sh: 12: gdrive/upload.sh: Syntax error: "(" unexpected
учитывая тот факт, что переменная SHELL в crontab среде была установлена на SHELL =/bin/sh и что синтаксис, там удар этот довольно разумный звук (даже если я все еще сбиваю с толку на роли #/bin/bash на первой строке сценария).
Проблема состоит в том что тот же результат все еще даже после помещения SHELL =/bin/bash в crontab файле.
Таким образом, вопрос, что случилось в этой установке? и как я могу запланировать этот сценарий при помощи crontab?
Хижина, которая должна быть записана, включает восклицательный знак.
Попытка записать #!/bin/bash
в первой строке Вашего сценария оболочки.