• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:CRON起動できない)

CRON起動できない

このQ&Aのポイント
  • Solaris+Cで開発したプログラムをCRON起動する方法について質問
  • CRON起動時にエラーが発生し、ライブラリファイルが見つからないという問題が発生している
  • シェルを直接実行すると正常に動作するため、対処方法を知りたい

質問者が選んだベストアンサー

  • ベストアンサー
  • entree
  • ベストアンサー率55% (405/735)
回答No.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 を見つけて実行できるようになります。

mkob
質問者

お礼

みなさんのご指摘の通りにすると動作しました。 ありがとうございました。

その他の回答 (2)

回答No.2

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)
回答No.1

cron から起動されるプロセスでは環境変数がほとんどセットされません.今回の場合,直接シェルスクリプトを叩くと動作するということなので,cron からの起動ではライブラリ libclntsh.so.8.0 にパスが通ってないのではないでしょうか? シェルスクリプト内部でパスを明示的に設定してやるとよいのでは,と思います.

関連するQ&A