【问题标题】:Bash one-liner that takes the output of pidof and passes them as arguments to strace?Bash one-liner 接受 pidof 的输出并将它们作为参数传递给 strace?
【发布时间】:2020-05-27 11:16:49
【问题描述】:

我想获取给定进程名称的 PID,并使用 strace 附加到它们的输出。我可以像这样手动执行此操作:

$ pidof foobar
1234 2345 
$ strace -p1234 -p2345 -s9999 -e write

太棒了!但我想从 Ansible 自动执行此操作,因此我需要在 Bash 中执行这两个步骤,即无需手动将两个数字 PID 转换为两个 -p 参数。

我尝试了很多方法,例如从 PID 创建一个数组并尝试使用 -p 加入数组,但是一旦它变得如此复杂,您需要创建一个函数,而我没有太多的范围使用 Ansible 单行代码。

谢谢!

【问题讨论】:

  • 是否可以编写一个执行必要命令的脚本并从 ansible 运行该脚本?
  • 可以,但不如避免创建脚本那么理想

标签: bash strace


【解决方案1】:

strace-p 也接受 PID 列表,您只需要:

strace -p "$(pidof foobar)" -s 9999 -e write

【讨论】:

  • 谢谢,我确实检查了strace 联机帮助页,但没有看到它支持逗号分隔的 PID。您提示我检查显示的联机帮助页:-p "pidof PROG" 支持语法。”查看我的答案,避免使用 -S 选项。
【解决方案2】:

strace 可能支持pidof 输出格式为:

-p "`pidof PROG`"

根据 oguz 的回答,我确定以下方法有效:

strace -p "`pidof foobar`" -s9999 -e writ

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-13
    • 1970-01-01
    • 2012-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-05
    • 2017-11-25
    相关资源
    最近更新 更多