我有一个启动独角兽实例的简单脚本(在 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
在脚本顶部设置变量: