我正在编写一个上帝脚本来监视我的 unicorn 。我从GitHub的示例脚本开始,并一直对其进行修改以匹配我的服务器配置。一旦上帝运行起来,诸如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 作为应用程序服务器,但之前我一直使用上帝进行监控。
如果我没记错的话,当您启动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/