使用上帝监视Unicorn - 以非零代码= 1开始退出

min*_*nic 42 ruby linux ruby-on-rails god unicorn

我正在制作一个神剧脚本来监视我的独角兽.我从GitHub的示例脚本开始,并一直在修改它以匹配我的服务器配置.一旦神运行,命令如god stop unicorngod restart unicorn工作就好了.

然而,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
Run Code Online (Sandbox Code Playgroud)

我在配置文件中声明所有路径都是绝对的.可能阻止此脚本工作的任何想法?

Jer*_*emy 14

我没有使用独角兽作为应用程序服务器,但我之前使用过神进行监控.

如果我正确地记得你开始上帝并给你的配置文件,它会自动启动你告诉它的任何东西.Unicorn可能已经在运行,这就是它抛出错误的原因.

god status一旦你开始上帝,就检查这一点.如果不是这种情况,您可以在命令行上检查命令的退出状态:

/usr/local/bin/unicorn_rails -c /home/my-linux-user/my-rails-app/config/unicorn.rb -E production -D; echo $?;

echo将打印最后一个命令的退出状态.如果它为零,则最后一个命令报告没有错误.尝试连续两次启动独角兽,我希望第二次它会返回1,因为它已经在运行了.

编辑:

包括评论的实际解决方案,因为这似乎是一个受欢迎的回应:

如果您的流程需要以特定用户身份运行,则可以设置显式用户和组.

God.watch do |w|
  w.uid = 'root'
  w.gid = 'root'

  # remainder of config
end
Run Code Online (Sandbox Code Playgroud)