Bash一个接受pidof输出并将其作为参数传递给strace的线性程序?
我希望获得给定进程名称的PID,并使用strace将其附加到其输出。我可以这样手动执行此操作:Bash一个接受pidof输出并将其作为参数传递给strace的线性程序?,bash,strace,Bash,Strace,我希望获得给定进程名称的PID,并使用strace将其附加到其输出。我可以这样手动执行此操作: $ pidof foobar 1234 2345 $ strace -p1234 -p2345 -s9999 -e write 太好了!但是我想从Ansible中自动执行这两个步骤,因此我需要在Bash中执行这两个步骤,即不需要手动将两个数字PID转换为两个-p参数 我已经尝试过很多事情,比如从PID创建一个数组,尝试用-p连接数组,但是一旦它变得如此复杂,你就需要创建一个函数,而我没有太多的范围
$ pidof foobar
1234 2345
$ strace -p1234 -p2345 -s9999 -e write
太好了!但是我想从Ansible中自动执行这两个步骤,因此我需要在Bash中执行这两个步骤,即不需要手动将两个数字PID转换为两个-p
参数
我已经尝试过很多事情,比如从PID创建一个数组,尝试用-p
连接数组,但是一旦它变得如此复杂,你就需要创建一个函数,而我没有太多的范围使用Ansible one liner
谢谢
strace
的-p
也接受PID列表,您只需:
strace -p "$(pidof foobar)" -s 9999 -e write
strace
可支持以下格式的pidof
输出:
-p "`pidof PROG`"
根据oguz的回答,我确定以下方法有效:
strace -p "`pidof foobar`" -s9999 -e writ
是否可以编写一个执行必要命令的脚本并从ansible运行该脚本?是的,这是可能的,但不如避免创建脚本那么理想。谢谢,我检查了
strace
手册页,但没有提到它支持逗号分隔的PID。您提示我检查手册页,其中显示:-p“pidof PROG
”语法受支持。请检查我的答案,避免使用-S
选项。