一尘不染

用上帝监视独角兽-以非零代码= 1开始退出

linux

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

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


阅读 287

收藏
2020-06-07

共1个答案

一尘不染

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

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

god status启动上帝后,运行此命令进行检查。如果不是这种情况,则可以在命令行上检查命令的退出状态是什么:

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

该回显将显示最后一条命令的退出状态。如果为零,则最后一条命令未报告任何错误。尝试连续两次启动独角兽,我希望它第二次返回1,因为它已经在运行。

编辑:

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

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

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

  # remainder of config
end
2020-06-07