2011-10-27 6 views
0

私はlibboostを使用してメモリ内の統計モデルを保持するbashスクリプトを実行しています。コマンドラインから直接スクリプトを実行すると(#/pylda/exec-test.sh)、正常に動作します。しかし、cronジョブを実行すると、次のエラーが発生します。cronで実行したときにbashスクリプトが失敗し、Libboostライブラリが見つかりません

"/root/pylda/src/infer: error while loading shared libraries: libboost_program_options.so.1.46.1: cannot open shared object file: No such file or directory" 

cronの動作はどのように異なりますか?設定が必要な環境変数はありますか?私が知る限り、これは根としてのcronです。

おかげ

答えて

2

LD_LIBRARY_PATH環境変数を確認してください?

0

てみます(通常はインタラクティブ(ログイン)中に持っている環境変数の存在のセッションあなたのcronに依存しない、一般的なコメントとして

# /etc/cron.d/something 
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 
+0

はこの1つ上の知識の私の欠如を許して助けることができることを願って

は - CentOSのインストールに関する特定のだろうパスはありますか? – Russ

+0

提供されている@ michael-krelin-hackerの答えがより正確です。LD_LIBRARY_PATHを設定する必要がありますが、それでもCronスクリプト内で行う必要があります。現在のLD_LIBRARY_PATHを 'env'でチェックする必要があります。 – 0xd

1

cronスクリプトのPATHのVARを設定します)スクリプト。実装によっては、最小限の環境しか定義しないものもあります。そこに直接宣言するか、必要な変数のファイルをソースに入れて、必要なものをスクリプト内に組み込むことができます。

1

これが古くても、私はこの答えが他の人に役立つと思います。

ここに私のcrontabのサンプルライン:

0 3 * * 1,2,4,5,6 (. /home/oracle/.profile; export ORACLE_SID=myDB;. myscript.ksh parm1 parm2;) 1>/dev/null 2>&1 

: 私のユーザー(oracle)のプロファイルを実行するので、私は、私は良いENVSを持っていると確信しています:。 /home/oracle/.profile ローカルのenv値を設定します。export ORACLE_SID = myDB params:でスクリプトを実行します。 myscript.ksh parm1 parm2(nota:スクリプトにxフラグがないのでドット。) 電子メールを送信しません:1>/dev/null 2> & 1(私のスクリプトは書式設定に必要な電子メールを送信します)

コマンドのリストを囲むには、()を使用し、コマンドを区切るにはセミコロン(;)を使用します。これは...

関連する問題