2017-06-07 70 views
-1

我創建下面的cronjob腳本時工作正常。它是手動生成的。但是,在cron中,它無法生成文件。腳本找不到庫,手動運行

下面是我的UNIX的cron腳本。

#!/usr/local/bin/bash 
var=`perl -w -e '$d=1*86400;@t=localtime (time -$d); printf "%.2d%.2d%.2d", $t[5]+1900,$t[4]+1,$t[3];'` 

var="`echo $var |cut -c3-8`" 

i=1; 

while [ $i -le 8 ] 
do 

    cd /home/svfe/bin 
    ./bills_unloader -d $var -f $i 
    i=`expr $i + 1` 
done 

echo "Done ! 

當我嘗試調試腳本,我發現下面的錯誤。

/usr/lib/hpux64/dld.so:無法找到庫'libclntsh.so.11.1'。 /home/swa/swa2/autoload/bills_unloader.sh:第19行:7078殺死
./bills_unloader -d 170606 -f $ I

爲什麼命令cron中失敗,但在執行時工作正常手動?

+1

你有沒有在[標籤的crontab維基]看到優秀的調試建議(https://stackoverflow.com/tags/cron/info)? –

+0

@BenjaminW。看來這個調試建議是,如何說,在這一刻有點遞歸。 – ArturFH

+0

@ ArturR.Czechowski這是一個恥辱。 crontab標籤wiki是一個出色的調試指南,但它現在與「cron」同義。自1月16日以來,顯然,這很奇怪 - 我確定我最近看過調試指南。 –

回答

1

最大的可能是你在你的CLI環境LD_LIBRARY_PATH變量設置,但是當腳本在cron下運行它不可用。添加一行:

declare -x > /tmp/variables.log.$(date +%s).$$ 

在腳本開始時,比較手動運行和cron運行的日誌。如有必要,請在腳本中正確設置LD_LIBRARY_PATH

由於它是一個HPUX系統,它可能是也SHLIB_PATH

相關問題