我正在编写一个上帝脚本来监控我的 unicorn 。我从 GitHub 的示例脚本开始,一直在修改它以匹配我的服务器配置。一旦 God 运行,诸如 god stop unicorn
和 god 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做app server,但是之前用god做监控。
如果我没记错的话,当你启动 God 并提供配置文件时,它会自动启动你告诉它要观看的任何内容。 Unicorn 可能已经在运行,这就是它抛出错误的原因。
一旦你启动了god,通过运行god status
来检查这个。如果不是这种情况,您可以在命令行上检查该命令的退出状态是什么:
/usr/local/bin/unicorn_rails -c/home/my-linux-user/my-rails-app/config/unicorn.rb -E production -D;
echo $?;
那个 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/