我在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中失败,但在手动执行时工作正常?
答案 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