繁体   English   中英

Bash脚本手动执行可以正常运行,但不能与crontab一起运行

[英]Bash script manual execute run normally but not with crontab

您好,我有一个像这样的脚本:

#!/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文件,但是如果我手动执行它,则效果很好..我还在crontab中运行了其他4个脚本,它们运行良好。.我仍然不知道这种现象的主要原因是什么

谢谢

我要刺一下:您的脚本由/ bin / sh而不是/ bin / bash运行。

尝试在cron条目中使用bash显式运行它,如下所示:

* * * * * /bin/bash /your/script

我猜想在执行$JAVACMD -jar LatencyCounter.jar LatencyCounter.xml $DATE $HR ,您不在包含LatencyCounter.jar的目录中。 在进入for循环之前,您可能需要cd $CURDIR

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM