2013-08-28 53 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? –