1

我对 GOD 文档很少感到困惑

首先我的配置脚本看起来像这样

DIRECTORY = "/Users/joshianiket22/myProject/god_script"
God.pid_file_directory = DIRECTORY
God.watch do |w|
  w.name = "mess"
  w.start = "ruby /Users/joshianiket22/myProject/god_script/simple.rb"
  w.pid_file =  File.join(DIRECTORY,'simple.pid')
  puts File.join(DIRECTORY,'simple.pid')
  w.stop = "ruby -e 'puts \"#{DateTime.now}\"'"
  w.log = File.join(DIRECTORY,'god.log')
  w.behavior(:clean_pid_file)
  w.interval = 10.seconds
   w.start_if do |start| 
    start.condition(:process_running) do |c| 
      puts "Inside start condition"
      c.interval = 5.seconds 
      c.running = false
    end 
  end 
end

困惑1:GOD PID FILE DILEMMA

在 GOD 文档中提到

在此处输入图像描述

现在我很清楚我已经设置了pid_filepid_file_directory但在我的配置中定义的那个目录中找不到 PID

仅供参考,启动 GOD 时sudo假设目录可以被 GOD 写入

困惑2: START_IF CONDITION

在此处输入图像描述

现在,如何定义 start_if 条件现在我无法理解这个用例。还字条件什么条件来设置条件

  • :process_running 是一组条件吗?如果是,start_if的其他条件是什么
  • 还有do 块内的属性应该做什么?他们什么时候被处决?

    更准确地说,我指的是 c.running = false (它在内部做什么以及 start_if上可用的其他属性列表)

混乱3(启动/停止/重启命令)

现在给定我的配置文件,其中写入了启动命令,现在是否还需要在配置中编写停止和重新启动命令

这样当运行以下

sudo 上帝停止混乱
sudo 上帝重新启动混乱

他们会被处决

假设我不写它们

  • 如果运行它们会发生什么?

  • 当执行停止命令即 sudo god restart mess` 时,GOD 最终会杀死正在运行的进程sudo god stop mess' is executed? or restart the running process when restart command i.e吗?

任何人都可以分享它的光

困惑4(是否守护进程):

根据 GOD 文档 在此处输入图像描述

现在考虑我通过进程明确地将 GOD 内部的背景放在类似

w.start = "ruby /Users/joshianiket22/myProject/god_script/simple.rb &" 

在这种情况下会发生什么

  • 上帝会监视他们的停止和重新启动命令吗?

因此,假设 GOD 知道该进程已进入后台并且在针对 GOD 运行时对该进程上的所有命令启动/停止/重新启动命令做出反应,那么在 GOD 中(在启动命令中)守护进程可以被认为是一种有效的方法?

喜欢

sudo 上帝停止混乱
sudo 上帝重新启动混乱

任何人都可以对此有所了解吗

所以这里是从上面提取的问题列表

  • 为什么 pid_file_directory 语法不起作用?

  • if :process_running 是一组条件start_if包含的其他条件还包含 c.running = false (内部执行)

  • 是否有必要编写/定义stoprestart在上帝配置中

  • 如果进程明确地移到后台,上帝仍然会监视它以获取诸如stop|restart等之类的命令

4

1 回答 1

2

部分回答我的部分问题

问题:在上帝配置中是否需要编写/定义停止和重启

回答 好吧,您实际上不能定义自己的命令,但如果您没有定义,则默认lambdastopandrestart

直接来自 GOD 文档

在此处输入图像描述

问题:如果进程显式移动到后台,上帝是否仍会监视它以获取停止|重启等命令

:答案是YESNO,不是因为如果你不给GODpid文件来监控它不会监控后台运行的进程

再次来自 GOD 文档

在此处输入图像描述

问题:如果 :process_running 是一组条件,其他条件start_if包含的内容也包含 c.running = false (内部执行)

回答:嗯,我将分两部分回答这个问题

  • 还包含哪些其他条件start_if

    Ans:嗯 最好看的地方 就是条件 上帝的目录 看这里process_running条件也 存在

  • 什么c.running = false(内部做)?

    Ans:那么 c.running 在内部用于检查(检查是针对进程 id 和运行变量执行的)进程是否在god启动之前运行,所以如果进程 ie(c.running = true) 正在运行并且pid指向的文件有更正后的一切运行良好,但如果c.running = truepid监控不同或不存在,它会继续循环,因此建议c.running = true仅在进程已经运行并且正确pid_file(其中正确pid)在上帝文件中定义时使用。可以在这里检查

注意:接受我的回答,因为只剩下一个问题,我相信它主要是因为我的错误行为而无法正常工作(即 pid 没有存储在所需的目录中):) 剩下的所有问题都由我回答。

于 2013-08-28T17:33:59.810 回答