我正在写一个god 的脚本来监控我的独角兽.我从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

我已经在配置文件中将所有路径声明为绝对路径.你知道是什么阻止了这个脚本的运行吗?

推荐答案

我没有用独角兽作为应用服务器,但我以前用过god 来监控.

如果我没记错的话,当你启动god并给出你的配置文件时,它会自动启动你让它看的任何东西.Unicorn可能已经在运行了,这就是它抛出错误的原因.

一旦你启动了god,就运行god status来判断这一点.如果不是这样,您可以在命令行上判断comand的退出状态:

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

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

编辑:

包括 comments 中的实际解决方案,因为这似乎是一个普遍的回应:

如果进程需要作为特定用户运行,则可以设置显式用户和组.

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

  # remainder of config
end

Ruby-on-rails相关问答推荐

如何测试自定义路由?

Rails 7.1.3如何在生产环境中查看堆栈跟踪

我try 使用Ruby on Rails7创建一个Carbon 足迹计算器.但我无法保存和用户S对象

如何将 ActionController::RoutingError 分类为 Sentry 中的错误

如何使用 activerecord activerecord-session_store 在 Rails 应用程序中使用 cookie 值在数据库中查找会话记录

只允许用户在 Rails 中输入字母和数字

如何为 I18n 设置 raise_on_missing_translations

GroupingError:错误:列必须出现在 GROUP BY 子句中或在聚合函数中使用

Rails 5:如何从数据库中删除列?

如何使用 capistrano deploy 定位特定的提交 SHA

添加自定义字段/列以使用 Rails 4 进行设计

从 before_action 中排除控制器

具有 has_many 关联的 FactoryGirl build_stubbed 策略

Rails:在 lib 目录中记录代码?

如何解决弃用警告方法 to_hash 已弃用并将在 Rails 5.1 中删除

通过重定向使闪存哈希保持不变

Rails 3.0 中的 f.error_messages

如何在 ROR (Ruby) 中显示 PDF?

减go Ruby 中的日期并以分钟为单位得到差异

你如何覆盖 form_for 助手中的类名?