У меня есть простой скрипт, который запускает экземпляр единорога (в 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
команда, и она установлена в /usr/local/bin
, то же самое для ruby
команда.
Похоже, что при загрузке PATH
еще не включает /usr/local/bin
. Как я могу это исправить?
Initscripts сами отвечают за установку соответствующего пути. Установить $PATH
переменная в верхней части скрипта:
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin