2017-06-07 4 views
-1

私はcronjobで以下のスクリプトを作成しています。手動で生成されます。しかし、cronでは、ファイルを生成できません。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は、殺した-d ./bills_unloader
170606 -f $ I

なぜコマンドはcronのに失敗しますが、実行時に正常に動作しています手動で?

+1

[crontabタグwiki](https://stackoverflow.com/tags/cron/info)に優れたデバッグアドバイスがありますか? –

+0

@ベンジャミンW。このデバッグのアドバイスは、ちょっと再帰的な言い方です。 – ArturFH

+0

@ ArturR.Czechowskiそれは残念です。 crontabタグwikiは優れたデバッグガイドでしたが、現在は "cron"と同義です。明らかに、1月16日以来、これは奇妙です - 私はそれよりも最近デバッグガイドを見たことがあります。 –

答えて

1

ほとんどの場合、CLI環境ではLD_LIBRARY_PATH変数が設定されていますが、スクリプトがcronで実行されている場合は使用できません。手動実行とcronの実行からログを比較し、スクリプトの先頭に

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

:行を追加します。必要に応じて、LD_LIBRARY_PATHをスクリプトに正しく設定します。

hpuxシステムなので、SHLIB_PATHでもかまいません。

関連する問題