您好,我有一个像这样的脚本:
#!/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中运行,它们工作得很好..我仍然无法弄清楚这种现象的主要原因是什么
谢谢
答案 0 :(得分:3)
我会采取刺戳:你的脚本由/ bin / sh而不是/ bin / bash运行。
尝试在cron条目中使用bash显式运行它,如下所示:
* * * * * /bin/bash /your/script
答案 1 :(得分:0)
我猜测当你执行$JAVACMD -jar LatencyCounter.jar LatencyCounter.xml $DATE $HR
时,你不在包含LatencyCounter.jar的目录中。在进入cd $CURDIR
循环之前,您可能需要for
。