Получение идентификатора процесса с именем процесса с помощью psutil - PullRequest
0 голосов
/ 09 января 2019

Я пишу пользовательский модуль ansible для получения идентификатора процесса с именем процесса с помощью пакета linux psutil. это мой файл модуля.

from ansible.module_utils.basic import AnsibleModule
import sys
try:
    import psutil
    HAS_PSUTIL = True
except ImportError:
    HAS_PSUTIL = False


def get_pid(name, module):
    return [int(p.info['pid']) for p in psutil.process_iter(attrs=['pid', 'name']) if name in p.info['name']]


def main():
    module = AnsibleModule(
        argument_spec={
            "name": {"required": True, "type": "str"}
        }
    )
    if not HAS_PSUTIL:
        module.fail_json(msg="Missing required 'psutil' python module. Try installing it with: pip install psutil")
    name = module.params["name"]
    response = dict(pids=get_pid(name, module))
    module.exit_json(**response)


if __name__ == '__main__':
    main()

ответный код для использования модуля

- name: "Checking the process IDs (PIDs) of sleep binary" 
  pids: 
    name: "some-long-process-name-999999"
  register: pids
- name: "Verify that the Process IDs (PIDs) returned is not empty"
  assert:
    that:
    - "pids.pids | length > 0"

Я получаю пустое имя процесса при попытке использовать длинное имя, для маленького имени оно работает нормально. Это проблема с модулем psutil? Я пробовал pidof и pgrep, и это также, похоже, не работает. Кто-нибудь может мне с этим помочь ? спасибо за ваше время.

...