ruby-on-rails - 使用上帝监控 unicorn - 以非零代码开始退出 = 1

标签 ruby-on-rails ruby linux unicorn god

我正在编写一个上帝脚本来监控我的 unicorn 。我从 GitHub 的示例脚本开始,一直在修改它以匹配我的服务器配置。一旦 God 运行,诸如 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做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/

相关文章:

css - 如何使用 CSS 使 simple_form 输入字段变宽?

ruby-on-rails - 通过 AJAX 创建表单时显示错误消息

c - C 中的动态数组用于内存映射

linux - 如何格式化/etc/passwd 中用户帐户的输出

linux - 指向头文件中 __u32 的指针

ruby-on-rails - Ruby on Rails,按两个条件查找

ruby-on-rails - 将局部变量传递给嵌套部分

ruby-on-rails - 在 Ruby 中,如何配置使用 Logger 轮换日志时使用的后缀?

ruby - 即使满足先决条件,如何强制执行 Rake 中的任务?

python - 为什么 Python 和 Ruby 这么慢,而 Lisp 实现却快?