Issue
I'm trying to capture a process that runs and make an strace of it in one line:
I managed to capture only the one that i want with this command
ps -ef | grep "[0-9].*[0-9] /usr/bin/python3 /home/pi/readcard.py"
outputs this:
root 676 668 99 11:00 ? 00:34:21 /usr/bin/python3 /home/pi/readcard.py
Now I'm trying to capture the process pid with this regex and use it to make another command:
ps -ef | grep "([0-9]+).*[0-9] /usr/bin/python3 /home/pi/readcard.py"
How I could make to run something like this?
sudo strace -f -p{captured_field} -s9999 -e write
Solution
Use awk
for only showing the second column:
ps -ef | grep "([0-9]+).*[0-9] /usr/bin/python3 /home/pi/readcard.py" | awk '{print $2}'
This, you can use it as an input for another command, by embedding it into $(...)
, as follows:
sudo strace -f -p{$(ps -ef | grep "([0-9]+).*[0-9] /usr/bin/python3 /home/pi/readcard.py" | awk '{print $2}')} -s9999 -e write
Good luck
Answered By - Dominique