检查进程是否正在运行

时间:2017-10-18 11:59:46

标签: ansible

我写了一个小的playbook来检查主机上是否正在运行给定的进程。我写的如下:

- 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 = BROADWAY时,我想检查的过程如下:

enter image description here

但是当我运行这个剧本时,报告的错误是:

  

无法找到所请求的服务marketacces broadway -vi:host

请有人知道我做错了吗?

2 个答案:

答案 0 :(得分:2)

我使用过pgrep,因为“ps -ef”输出在服务器之间有所不同(至少在我的情况下)。

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

答案 1 :(得分:0)

  

请有人知道我做错了吗?

Service与计算中的process不同。

在Ansible中没有可以管理/检查进程的模块。您可以使用shell模块中的问题中包含的命令(注意this),注册结果并运行任务以启动该过程。

但是,同样可能的是,您的marketaccess实际上是一项服务,或者另一项服务创建了子进程。没有办法说出来。请参阅软件手册。

您可以将service module的参数作为arguments参数提供。