- ベストアンサー
CRON起動できない
- Solaris+Cで開発したプログラムをCRON起動する方法について質問
- CRON起動時にエラーが発生し、ライブラリファイルが見つからないという問題が発生している
- シェルを直接実行すると正常に動作するため、対処方法を知りたい
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
libclntsh.so.8.0 って Oracle ですよね。 そういうことであれば、実行前に、 LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH と設定することで、$ORACLE_HOME/lib にあるライブラリ libclntsh.so.8.0 を見つけて実行できるようになります。 ただ、cron から起動する場合は LD_LIBRARY_PATH が設定されていないので、シェルを介して起動するか、C 言語のプログラムをコンパイルするときに以下の環境変数を設定することで LD_RUN_PATH=$ORACLE_HOME/lib:$LD_RUN_PATH rpath と呼ばれるものが実行プログラムに埋め込まれ、LD_LIBRARY_PATH の設定がなくても、ライブラリ libclntsh.so.8.0 を見つけて実行できるようになります。
その他の回答 (2)
- lowrider_2005
- ベストアンサー率40% (1520/3748)
bashだったら、シェルスクリプトの最初に LD_LIBRARY_PATH=/usr/lib:/usr/dt/lib:/usr/openwin/lib:/hoge/fuga/lib export LD_LIBRARY_PATH (/hoge/fuga/lib はlibclntsh.so.8.0のあるパス) とか書いてみたらどうでしょうか?
- foodp
- ベストアンサー率33% (2/6)
cron から起動されるプロセスでは環境変数がほとんどセットされません.今回の場合,直接シェルスクリプトを叩くと動作するということなので,cron からの起動ではライブラリ libclntsh.so.8.0 にパスが通ってないのではないでしょうか? シェルスクリプト内部でパスを明示的に設定してやるとよいのでは,と思います.
お礼
みなさんのご指摘の通りにすると動作しました。 ありがとうございました。