【问题标题】:Trying to understand GOD rb试图理解GOD rb
【发布时间】:2013-08-28 10:50:12
【问题描述】:

我对 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

在上帝的文档中提到了

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

仅供参考,以sudo 启动 GOD,因此假设目录可由 GOD 写入

困惑 2: START_IF CONDITION

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

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

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

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

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

这样当运行下面的时候

sudo 上帝停止混乱
sudo 神重启一团糟

他们会被处决

假设我不写它们

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

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

有人可以分享一下吗

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

根据 GOD 文档

现在考虑一下我明确地将进程放在 GOD 内部的背景中,例如

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

在这种情况下会发生什么

  • GOD 会监视他们的停止和重启命令吗?

因此,假设 GOD 知道进程已进入后台,那么在 GOD 中(在 start 命令中)守护进程可能是一种有效的方法 当针对上帝运行时,它会对该进程上的所有命令启动/停止/重启命令做出反应吗?

喜欢

sudo 上帝停止混乱
sudo 神重启一团糟

谁也可以解释一下这个问题

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

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

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

  • 神配置中是否需要写/定义stoprestart

  • 如果进程显式移至后台,上帝仍会监视它以获取诸如 stop|restart 等命令

【问题讨论】:

    标签: ruby god process-monitoring


    【解决方案1】:

    部分回答我的部分问题

    问题:神配置中是否需要写/定义停止和重启

    Answer其实你不能定义你自己的命令,但如果你没有定义默认的lambdastoprestart

    直接来自上帝的文档

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

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

    再次来自 GOD 文档

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

    回答:这个问题我分两部分回答

    • start_if 还包含哪些其他条件?

      Ans:嗯 最好看的地方就是在神签目录下hereprocess_running条件也存在

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

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

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

    【讨论】:

    • 您好,谢谢分享。我猜pid_filepid_file_directory 设置必须结合起来,这样上帝才能看到正确的pid?你能解释一下我的问题stackoverflow.com/questions/25703031/…吗?
    猜你喜欢
    • 2020-04-06
    • 2023-03-07
    • 2011-03-28
    • 2011-11-27
    • 2017-08-11
    • 1970-01-01
    • 2013-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多