Bash скрипт вручную запускается нормально, но не crontab - PullRequest
0 голосов
/ 26 августа 2011

Здравствуйте, у меня есть такой скрипт:

#!/usr/bin/bash


ARSIP=/apps/bea/scripts/arsip
CURDIR=/apps/bea/scripts
OUTDIR=/apps/bea/scripts/out
DIRLOG=/apps/bea/jboss-6.0.0/server/default/log
LISTFILE=$CURDIR/tmp/file.$$
DATE=`perl -e 'use POSIX; print strftime "%Y-%m-%d", localtime time-86400;'`

JAVACMD=/apps/bea/jdk1.6.0_26/bin/sparcv9/java

HR=00

for (( c=0; c<24; c++ ))
do
    echo $DATE $HR
    $JAVACMD -jar LatencyCounter.jar LatencyCounter.xml $DATE $HR
    sleep 1
    cd $OUTDIR
        mv btw_120-180.txt btw_120-180-$DATE-$HR.txt
        mv btw_180-360.txt btw_180-360-$DATE-$HR.txt
        mv btw_60-120.txt btw_60-120-$DATE-$HR.txt
        mv failed_to_deliver.txt failed_to_deliver-$DATE-$HR.txt
        mv gt_360.txt gt_360-$DATE-$HR.txt
        mv out.log out-$DATE-$HR.log
    cd -
    let HR=10#$HR+1
        HR=$(printf %02d $HR);
done

cd $OUTDIR

tar -cf latency-$DATE.tar btw*-$DATE-*.txt gt*$DATE*.txt out-$DATE-*.log
sleep 300
gzip latency-$DATE.tar
sleep 300
/apps/bea/scripts/summaryLatency.sh
sleep 300
rm -f btw* failed* gt* out*

#mv latency-$DATE.tar.gz ../$ARSIP
cd -

Он в основном выполняет файлы jar в той же директории, что и этот скрипт, а затем tar-файл, gzip-файл и выполняет другой файл bash, затем удаляет всепредыдущие собранные файлы.Проблема в том, что мне нужен этот скрипт для ежедневного запуска, и я использую crontab для этого.Он по-прежнему возвращает пустой файл tar, но если я выполняю его вручную, он работает хорошо .. У меня также есть 4 других скрипта, работающих в crontab, и они работают хорошо .. Я до сих пор не могу понять, что является основной причиной этого явления

спасибо

Ответы [ 2 ]

3 голосов
/ 26 августа 2011

Я возьму удар: ваш скрипт запускается / bin / sh вместо /bin/bash.

Попробуйте явно запустить его с bash при входе в cron, например:

* * * * * /bin/bash /your/script
0 голосов
/ 26 августа 2011

Я предполагаю, что когда вы выполняете $JAVACMD -jar LatencyCounter.jar LatencyCounter.xml $DATE $HR, вы не находитесь в каталоге, содержащем LatencyCounter.jar.Возможно, вы захотите cd $CURDIR, прежде чем войти в цикл for.

...