2013-08-28 51 views
1

我面临一些困惑与神文档试图了解GOD RB

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

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文件困境

神它提到的文件

enter image description here

现在我清楚,我已经设置了pid_filepid_file_directory然而,PID是任何地方在该目录是在我的配置

FYI定义要看到,随着sudo所以假设目录开始神会是可写的由GOD

混乱2: START_IF CONDITION

enter image description here

现在,如何定义start_if条件,现在我无法理解此用例。 此外字条件哪些条件来设定的条件

  • 是:process_running一组的情况?如果是的话是什么等一系列 条件start_if
  • 而且什么呢内部属性假设要做吗?他们什么时候执行?

    更确切地说我指的是 c.running = FALSE(它做什么内部,什么属性的其他名单,请start_if

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

现在给出我的配置文件,其中有一个开始命令写入它,现在也需要编写停止和重新启动命令,以及在配置

使运行以下

须藤神停止乱
须藤神重启乱

,他们将得到执行

当假设我不写他们

  • WH如果运行它们会发生?

  • 时将停止命令即sudo god stop mess' is executed? or restart the running process when restart command i.e须藤神重启mess`执行“上帝最终会杀死正在运行的进程?

可以在其上任何人共用光

混淆4(无论或是否不守护进程的过程):

根据GOD文档 enter image description here

现在想想我明确地把过程与背景GOD里面的东西一样

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

在这种情况下

  • 上帝会监控他们停止和重新启动命令会发生什么?

所以daemonizing内GOD(在start命令)的过程中可以考虑的一种有效的方法假设上帝知道这个过程在后台 已经和它在这一过程反应的所有命令启动/停止/重启命令当对阵上帝跑?

须藤神停乱
须藤神重启乱

任何人都可以提出这方面的一些光以及

因此,这里有从上面

提取问题的列表
  • 为什么不是pid_file_directory语法工作?

  • if:process_running是一组条件,其他条件是什么start_if也包含什么c。运行= FALSE(内部做)

  • 是否有必要写/上帝配置

  • 定义stoprestart如果过程明确地移动到背景将神仍然监视它​​的命令像stop|restart

回答

2

部分回答我的问题的某些部分

问:是否有必要写/神配置中定义停止和重新启动

回答那么不是真的,你可以定义自己的命令,但如果万一你不定义存在对stop默认lambdarestart

直接从GOD文件

enter image description here

问题:如果过程明确地移动到背景将神仍然监测它像停止命令|重启等

:答案是YESNO,没有因为如果你不给神pid文件监视它不会监视进程在后台运行

再从GOD文件

enter image description here

问题:如果:PROC ess_running是一组的其他条件不start_if什么条件也含有什么c.running = FALSE(内部做)

:嗯,我将在第2个部分

  • 什么其他条件回答这个问题start_if包含?

    Ans:好找的最好的地方是神的检查条件目录下超过hereprocess_running条件也存在

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

    Ans:在执行god时,c.running在内部用于检查(检查是否针对进程标识和运行变量执行),因此如果进程即(c。运行= true)正在运行并且文件指向pid已纠正所有工作正常,但如果c.running = truepid监视不同或不存在,则保持循环,因此建议仅在进程已运行且正确时使用c.running = truepid_file(正确的pid就是)在上帝文件中定义。 一个可以检查在here

注:接受我的答案,因为只有一个问题是离开了,我相信这是大多没有工作,因为我的错误行为(即PID没有得到存储在所需的目录):) 休息所有问题都由我回答。

+0

嗨,感谢您分享此信息。我猜'pid_file'和'pid_file_directory'设置必须结合起来才能看到正确的pid?你能否对我的问题提出一些看法http://stackoverflow.com/questions/25703031/god-wont-restart-died-process? –