你好,我有這樣一個腳本:bash腳本手動執行與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文件,這個腳本,然後焦油結果,GZIP,並執行另一個bash文件然後刪除所有以前收集的文件。問題是我需要這個腳本每天運行,我使用crontab來做到這一點。它仍然返回空的tar文件,但如果我手動執行它效果很好..我也有其他4個腳本運行在crontab中,他們工作良好..我仍然不知道這種現象的主要原因是什麼
謝謝
將cron stderr輸出重定向到日誌文件並查看其中包含的內容。也許perl不在路徑中。你有輸出嗎? – joemooney
另外4個腳本也有一個perl的東西,它的工作原理..對於輸出,通常它應該生成2個文件(一個gzip文件通常是6到12 MB和1 KB文件),但是用crontab它給了我一個52 KB gzip文件和一個空文件。 – Lynx777
「我的腳本是從命令行運行的,但不是從cron運行的」,它幾乎和Unix本身一樣古老。你試過Google嗎? – tripleee