2013-11-28 77 views
4

在配方文件中,我需要檢查一個服務是否已經在運行。如果是這樣,我需要阻止它。如何檢查服務是否在主廚中運行?

service "apache" do 
    supports :status => true 
    action :stop 
end 

任何幫助將不勝感激。

+0

爲什麼你需要檢查? 「服務」apache「做動作:開始結束」應該足夠了 - 因爲廚師會檢查自己,如果服務正在運行。如果是這樣,它什麼都不會做。 –

+1

[此答案](http://serverfault.com/q/534498/144062)可能已關閉。然而,Draco有正確的想法,開始吧。如果沒有,那麼您的下一個依賴該服務的命令將很快得到反饋。但是您可以使用廚師來運行系統命令,因此您可以像在系統上一樣進行服務檢查並評估信號或輸出。 – vgoff

+0

@DracoAter檢查我編輯的問題。我沒有正確地提出問題。如果啓用了服務,我需要停止服務。 – Pavan

回答

4

廚師是陳述性的。所以你寫的代碼完全符合你所描述的內容。

+0

是否可以做一個開關箱來啓動和停止服務?我對此很難過。 理想情況下,我想停止服務,如果它的運行,反之亦然。 – Pavan

+0

是的,你可以打開':action',但是爲什麼?我不明白你的用例。 – sethvargo

+0

這有點複雜。每次我們在廚師提供的實例上運行廚師客戶端時,我們的食譜都需要停止並在不同的時間啓動,以讓其他食譜執行其操作,因爲我們有很多依賴性。所以,我實際上試圖從文檔中理解這個'轉換'表述,我無法做出任何事情。 – Pavan

1
service "apache" do 
    supports :status => true, :restart => true, :start => true 
    action [ :start ] 
end 

如果服務已經運行,它不會做任何事情。但如果停止,它會啓動服務

相關問題