2017-06-07 37 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