Как получить только родительский PID процесса и исключить дочерние процессы, связанные с ним, с помощью grep - PullRequest
0 голосов
/ 26 апреля 2020

Я пишу ansible пьесу, которая будет go и убьет PID.

Я нашел хороший ответ, который был важен для меня: { ссылка }

Тем не менее, первый шаг, который Get running processes в моем случае, у меня есть два процесса следующим образом:

# when i do: ps -ef | grep appp.py

ubuntu   17765     1  2 12:14 pts/0    00:00:04 python appp.py 
ubuntu   17784 17765  4 12:15 pts/0    00:00:05 /home/ubuntu/venvs/myvnv/bin/python /home/ubuntu/deploy/appp.py 
ubuntu   17844 14784  0 12:17 pts/0    00:00:00 grep --color=auto appp.py

Это убивает 17765, а затем завершается неудачно с:

failed: [10.10.1.1] (item=17784) => {"ansible_loop_var": "item", "changed": true, "cmd": "kill 17784", "delta": "0:00:00.002196", "end": "2020-04-26 12:23:22.833284", "item": "17784", "msg": "non-zero return code", "rc": 1, "start": "2020-04-26 12:23:22.831088", "stderr": "/bin/sh: 1: kill: No such process", "stderr_lines": ["/bin/sh: 1: kill: No such process"], "stdout": "", "stdout_lines": []}

Это значит ... он не может найти 17784, чтобы убить.

Вопрос: как получить только родительский PID (17784) с ps grep и затем передать чтобы убить его?

1 Ответ

0 голосов
/ 27 апреля 2020

Та c это до конца | grep -v grep

...