web-dev-qa-db-ja.com

起動時のinit.dスクリプトのPATH問題

Unicornインスタンス(Ubuntu 12.04LTS)を起動する簡単なスクリプトがあります。

#!/bin/sh

case "$1" in
    start)
       echo "starting"
       cd /path && bundle exec Unicorn -c /path/config/Unicorn.rb -D -E production
      ;;
     stop)
      echo "Stopping Unicorn Instances"
      kill `cat /tmp/Unicorn.pid`
    ;;
    restart)
    echo "sending USR2 to all unicorns"
    kill -s USR2 `cat /tmp/Unicorn.pid`
    ;;
esac
exit 0

呼び出されたときに正しく動作します:/etc/init.d/Unicorn_boot.sh start

ブート時に開始したいので、実行しました:update-rc.d -f Unicorn_boot.sh defaults

ここで再起動すると、次のエラーが発生します。

/etc/rc2.d/S20Unicorn_boot.sh: 10: /etc/rc2.d/S20Unicorn_boot.sh: bundle: not found

bundleコマンドを確認したところ、Rubyコマンドと同じように/usr/local/binにインストールされています。

ブート時にPATH/usr/local/binがまだ含まれていないようです。どうすれば修正できますか?

8
Peterdk

Initscriptは、適切なパスを自分で設定する必要があります。をセットする $PATHスクリプトの上部にある変数:

PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin
9
mgorven