我正在编写一个上帝脚本来监视我的独角兽。我从GitHub的示例脚本开始,并一直对其进行修改以匹配我的服务器配置。上帝跑了之后,诸如god stop unicorn和的命令god restart unicorn就可以了。
god stop unicorn
god restart unicorn
但是,god start unicorn结果WARN: unicorn start command exited with non-zero code = 1。奇怪的是,如果我直接从配置文件中复制启动脚本,它将像全新的野马一样直接启动。
god start unicorn
WARN: unicorn start command exited with non-zero code = 1
这是我的启动命令:
/usr/local/bin/unicorn_rails -c /home/my-linux-user/my-rails-app/config/unicorn.rb -E production -D
我已经在配置文件中将所有路径声明为绝对路径。有什么想法可能阻止此脚本工作?
我没有使用独角兽作为应用程序服务器,但之前我一直使用上帝进行监视。
如果我没记错的话,当您启动God并提供配置文件时,它会自动启动您告诉它观看的内容。独角兽可能已经在运行,这就是它引发错误的原因。
god status启动上帝后,运行此命令进行检查。如果不是这种情况,则可以在命令行上检查命令的退出状态是什么:
god status
/usr/local/bin/unicorn_rails -c /home/my-linux-user/my-rails- app/config/unicorn.rb -E production -D; echo $?;
/usr/local/bin/unicorn_rails -c /home/my-linux-user/my-rails- app/config/unicorn.rb -E production -D;
echo $?;
该回显将显示最后一条命令的退出状态。如果为零,则最后一条命令未报告任何错误。尝试连续两次启动独角兽,我希望它第二次返回1,因为它已经在运行。
编辑:
包括评论中的实际解决方案,因为这似乎是一个受欢迎的回应:
如果您的进程需要以特定用户身份运行,则可以设置一个显式用户和组。
God.watch do |w| w.uid = 'root' w.gid = 'root' # remainder of config end