デーモンによって開始されたスクリプトが共有ライブラリを見つけることができません

デーモンによって開始されたスクリプトが共有ライブラリを見つけることができません

extend特定のOIDの一部のスクリプトを呼び出すディレクティブを使用してsnmpdを拡張しています。スクリプト自体はカスタムヘルパーを呼び出していくつかの値を抽出します。コマンドラインから手動で起動すると、ヘルパーは正しく実行されますが、スクリプトから呼び出すと失敗するため、機能しません/cots/boost-1.55/lib。実行後、ブーストライブラリがキャッシュにあることを確認し/cots/boost-1.55/libました。スクリプトにはデフォルトで次のものが含まれます。/etc/ld.conf.d/cots.confldconfig

result=`callHelper with arguments`
echo $result

結果はsnmpdによってキャプチャされ返されます。 OIDを照会すると、外部ブーストライブラリが見つからないというエラーが発生します。

su userスクリプトを呼び出して動作させることができました。

result=`su user "callHelper with arguments"`
echo $result

ldキャッシュを使用するときは正確ですsuが、スクリプトで直接書くときにそうでない理由を説明できる人はいますか?私はこれがldconfigシステムサービスであるsnmpdと関係があると思うので、環境は異なりますが、環境の一部ではありません。

答え1

ライブラリが検索パスにあることを確認してください。 TERMで次のコマンドを実行してグローバルパスを確認します。パスは.profile非構成を使用して設定されます。

echo $PATH$ 

検索パスを表示します。ライブラリを検索パスに明示的に追加するには、用語「set」コマンドを使用します。ドル記号は、これがシェルへのグローバル呼び出しであることを示します。努力する

set PATH=$PATH$;/cots/boost-1.55/lib

セミコロンはシェルに新しい検索パスを開始するように指示します。ただし、これは検索パスが存在する場合にのみ機能します。もちろんそれは私のコンピュータから分岐しました。

set PATH=$PATH$;/cots/boost-1.55/lib
bash: /cots/boost-1.55/lib: -forks No such file or direc

保守党!

関連情報