2017-10-18 253 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 
相关问题