Как сделать команду с полями, захваченными grep? - PullRequest
1 голос
/ 19 июня 2020

Я пытаюсь захватить запущенный процесс и сделать его в одной строке:

Мне удалось захватить только тот, который я хочу, с помощью этой команды

ps -ef | grep "[0-9].*[0-9] /usr/bin/python3 /home/pi/readcard.py"

выводит это:

root       676   668 99 11:00 ?        00:34:21 /usr/bin/python3 /home/pi/readcard.py

Теперь я пытаюсь захватить pid процесса с помощью этого регулярного выражения и использовать его для создания другой команды:

ps -ef | grep "([0-9]+).*[0-9] /usr/bin/python3 /home/pi/readcard.py"

Как я мог заставить работать что-то подобное?

sudo strace -f -p{captured_field} -s9999 -e write

1 Ответ

1 голос
/ 19 июня 2020

Используйте awk только для отображения второго столбца:

ps -ef | grep "([0-9]+).*[0-9] /usr/bin/python3 /home/pi/readcard.py" | awk '{print $2}'

Это, вы можете использовать его как ввод для другой команды, вставив его в $(...) следующим образом:

sudo strace -f -p{$(ps -ef | grep "([0-9]+).*[0-9] /usr/bin/python3 /home/pi/readcard.py" | awk '{print $2}')} -s9999 -e write

Удачи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...