デーモン起動・終了時実行の環境変数(パス)の違いに注意

最近、サーバの自動構築にあたり、
サーバ起動時のスクリプトをChefと組み合わせて書いているのですが、そこで問題が。。。

rootユーザでシェルスクリプトをがりがり書いて、sh ~~~で実行確認。
その後サーバの起動時にスクリプトが実行するように/etc/init.d以下に起動スクリプトを作成し、
chkconfig onでサーバを再起動してみると

スクリプトが動いていない

環境変数が違う

調べてみると両者実行時に、環境変数が違うために
コマンドやそれらの設定などが読み込まれずエラーとなるとのこと

rootユーザでのshコマンド実行時とデーモン起動終了時のスクリプトの環境変数の違いについては
以下の記事がすごく参考になりました。

デーモンの起動・終了にはserviceコマンドを利用しよう

そのため、起動スクリプトを記載し確認する際には、
service コマンドを利用して実行しながら確認する必要があります。

serviceコマンドで実行すると、デーモン起動・終了時のスクリプト実行時の環境変数と
同じ環境変数で実行してくれるためいちいちサーバを再起動しなくても確認することはできます。

同じrootで実行してるのなら環境変数も同じにしてくれたらいいのに。。。

  1. No Comments

*