我正在编写一个上帝脚本来监视我的 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

我已经在配置文件中将所有路径声明为绝对路径。有什么想法可能阻止此脚本工作?

最佳答案

我没有使用 unicorn 作为应用程序服务器,但之前我一直使用上帝进行监控。

如果我没记错的话,当您启动God并提供配置文件时,它将自动启动您告诉其观看的内容。 unicorn 可能已经在运行,这就是它引发错误的原因。

一旦开始神,请运行god status进行检查。如果不是这种情况,则可以在命令行上检查命令的退出状态是什么:
/usr/local/bin/unicorn_rails -c /home/my-linux-user/my-rails-app/config/unicorn.rb -E production -D;echo $?;
该回显将显示最后一条命令的退出状态。如果为零,则最后一条命令未报告任何错误。尝试连续两次启动 unicorn ,我希望它第二次返回1,因为它已经在运行。

编辑:

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

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

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

  # remainder of config
end

关于ruby-on-rails - 用上帝监视 unicorn -以非零代码= 1开始退出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3877178/

10-11 23:14
查看更多