Моя задача выполняет поиск конфигурации в столбце CMD, чтобы собрать информацию о том, что является каталогом конфигурации приложения, а также PID.
---
- hosts: all
pre_tasks:
- name: Check if process is running
become: yes
shell: 'ps -e --format="pid cmd" | grep process.cfg | sed -e "s/[[:space:]]\+/ /g"| grep -v color'
register: proces_out
Вывод выглядит следующим образом после этой команды:
32423 /var/local/bin/application -c /var/local/etc/process.cfg
Но я думаю, что у ansible есть проблемы с 2 greps в 1 команде.Я нуждаюсь в них обоих, потому что, если я не использую обратный "grep -v color", эта раздражающая вещь появляется "grep --color = auto", я не могу вырезать PID, который мне нужен в другой задаче, которая убивает процесс, потому что реальный процесс находится во второй строке.
Моя вторая идея заключалась в том, чтобы использовать AWK, который, как мне кажется, был бы лучшим инструментом для этого случая, но если бы я использовал двойные кавычки в параметре --format и в команде SED, а одинарный кавычка в awkпараметры они не хотят сотрудничать.Даже если я держу их в равновесии, они мешают им самим.
Идея AWK:
shell: 'ps -e --format="pid cmd" | grep process.cfg | sed -e "s/[[:space:]]\+/ /g"| awk 'FNR == 2''
Я хочу попросить подсказку, что было бы лучше, чтобы избежать несовместимости в коде и иметь возможностьиспользовать его после как вывод в переменную
## PID
{{ proces_out.stdout.split(' ')[0] }}
## application
{{ proces_out.stdout.split(' ')[1] }}
## config
{{ proces_out.stdout.split(' ')[3] }}