【问题标题】:Monitoring all running process using strace in shell script在 shell 脚本中使用 strace 监控所有正在运行的进程
【发布时间】:2016-02-12 14:11:22
【问题描述】:

我想使用strace 监控所有正在运行的进程,当一个进程结束时,strace 的输出应该被发送到一个文件中。

以及如何找到每个正在运行的 proc PID。我还想在输出文件中包含进程名称。

【问题讨论】:

  • "我想使用strace 监控所有 正在运行的进程..." 不,你不需要。真的。如果只是因为运行strace 创建了一个新进程,然后您将尝试对其进行监视,这将启动另一个进程,这...但是还有其他重要原因,这也是一个坏主意。您可能需要稍微完善您对需要完成的工作的定义。

标签: linux shell strace


【解决方案1】:
$  sudo strace -p 1725 -o firefox_trace.txt

$ tail -f firefox_trace.txt

1725 将是您要监控的进程的 PID(您可以使用“ps -C firefox-bin”找到 PID,对于示例中的 firefox)

firefox_trace.txt 将是输出文件!

得到的方法是找到每个正在运行的proc PID,并使用命令将它们写入输出文件!


考虑到doc, -p pid

使用进程 ID pid 附加到进程并开始跟踪。这 跟踪可以随时由键盘中断信号终止( CTRL-C)。 strace 将通过将自身与被跟踪对象分离来做出响应 进程离开它(他们)继续运行。多个 -p 选项 除命令外,还可用于附加最多 32 个进程 (如果给出了至少一个 -p 选项,则这是可选的)。

【讨论】:

  • 如何找到每个正在运行的 proc PID。我还想在输出文件中包含进程名称。
  • @R.Anu 现在无法验证,但我相信“ps aux”应该会为您提供完整的 procs 列表...然后尝试使用正则表达式或其他东西将其剪切,以获得proc的PID列表!
【解决方案2】:

使用-o 将输出存储到文件中,或使用2>&1 将标准错误重定向到输出,因此您可以过滤它(grep)或将其重定向到文件中(> file)。

不知道进程的PID,但不知道名字的情况下,可以使用pgrep命令,例如

strace -p $(pgrep command) -o file.out

其中command 是您的进程名称(例如phpChrome 等)。

要了解有关参数的更多信息,请查看man strace

【讨论】:

    猜你喜欢
    • 2011-11-04
    • 1970-01-01
    • 2017-02-21
    • 2015-12-21
    • 1970-01-01
    • 1970-01-01
    • 2014-08-21
    • 2020-03-23
    • 1970-01-01
    相关资源
    最近更新 更多