作为cron作业运行时脚本无法找到库,手动运行时工作正常

时间:2017-06-07 14:15:06

标签: shell unix cron hp-ux

我在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:line 19:7078 Killed
  ./bills_unloader -d 170606 -f $ i

为什么命令在cron中失败,但在手动执行时工作正常?

2 个答案:

答案 0 :(得分:1)

很可能您在CLI环境中设置了LD_LIBRARY_PATH变量,但在cron下运行脚本时它不可用。添加一行:

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

在脚本的开头,比较手动运行和cron运行的日志。如有必要,请在脚本中正确设置LD_LIBRARY_PATH

由于它是一个hpux系统,它也可能是SHLIB_PATH

答案 1 :(得分:0)

您可能正在与另一个用户一起使用命令,并与另一个用户一起使用crontab。 假设您的命令与用户“ xyz”配合正常,请在crontab条目中尝试以下命令- su-xyz -c sh