有效使用 strace

有效使用 strace

现在我正在处理一个客户的基于 php 的网站,该网站不知何故阻塞了他与共享托管提供商的所有可用进程。我想向他证明在浏览器中加载特定索引页时,究竟运行了哪些进程以及有多少个进程。我可以看到顶部一次弹出大约 5 或 6 个进程,但它们都消失得如此之快,以至于我无法找到任何要跟踪的特定 pid。

谁知道我怎样才能预测我应该跟踪的 pid 号码以了解他的网站具体在做什么?

答案1

使用 ps 或 pstree 查找要跟踪的父进程 ID,我假设它可能是 apache?然后,使用-fstrace 选项,以便它也能跟踪所有子进程 ID。最后,如果您有相对较新的 strace,则可以使用 跟踪进程活动-e trace=process

把所有这些放在一起,并假设你的 apache 父进程是 pid 1234:

strace -o logfile.txt -f -e trace=process -p1234

应该可以让你非常接近你想要去的地方。

答案2

我想知道以下概念是否太慢(即使是脚本)而无法捕捉到 pid:

  1. 等待inotifywait特定索引页的访问。
  2. 配置inotifywait触发

strace -o /tmp/wtf -f -e trace=process -p $(lsof -t /path/to/specific/index.php)

或者类似的东西。这只是一个大胆的猜测,并没有真正尝试过。

也可以看看:调试缓存研磨

相关内容