2017-10-18 252 views
0

我編寫了一個小型手冊,用於檢查主機上是否運行給定進程。我寫了這個如下:檢查進程是否正在運行

- name: checking process running for clients and start process when not 
    service: 
    name: marketaccess {{ item.key|lower }} -vi 
    state: started 
    register: process 
    with_dict: "{{ customers }}" 

如果詞典的item.key =百老匯和我試圖檢查過程如下:

enter image description here

但是當我運行這個劇本的所報告的錯誤是:

找不到所請求的服務marketacces百老匯-VI:主機

請有人看到我在做什麼錯了嗎?

+0

[**請勿張貼代碼或錯誤的圖像!**](https://meta.stackoverflow.com/q/303812/995714)圖像和截圖可以是一個很好的補充後,但是請確保帖子在沒有它們的情況下仍然清晰有用。如果您發佈代碼圖片或錯誤消息,請確保您也直接複製並粘貼或將實際代碼/消息輸入到帖子中。 – Rob

回答

0

請問有人能看到我在做什麼錯?

Service與計算中的process不一樣。

在Ansible中沒有管理/檢查過程的模塊。您可以使用shell模塊的問題中包含的命令(請注意this),註冊結果並運行任務以啓動該過程。

但是,您的marketaccess實際上也可能是服務,或者是另一項服務創建子進程。沒有辦法告訴。請參閱軟件的手冊。

您可以提供參數service module作爲arguments參數。

+0

嗨techraf,你知道是否存在一個模塊來檢查正在運行的進程而不是服務? –

+0

感謝您的諮詢! –

0

我已經使用了pgrep,因爲「ps -ef」輸出在服務器之間有所不同(至少在我的情況下)。

- name: "Get process PID" 
    shell: > 
    echo -n 
    $(pgrep {{ item.binary_name }}) 
    args: 
    executable: "{{ shell_path }}" 
    register: my_procs 
相關問題