绘制进程的睡眠/等待链

绘制进程的睡眠/等待链

我经常想知道为什么管道中间的进程正在休眠而不忙于处理数据。我目前的方法是:

  1. 找到pid感兴趣的
  2. sudo strace -pt pid获取阻塞系统调用和对象(fd、child、futex 等)
  3. 点击Ctrlc以分离 strace
  4. 查找适当的对象/proc/pid
  5. grep /proc/或用于lsof查找正在等待的管道或进程的另一端
  6. 用新的从 #1 重复pid

这是一个相当缓慢的过程,结合了许多不能很好地协同工作的工具(strace特别是很难自动化)。是否有一种工具可以为我执行此循环并绘制出进程的等待链,或者至少使一次迭代不那么尴尬?

Linux 3.2、Ubuntu LTS 12、x64、VirtualBox 下(如果有的话)。

答案1

大多数ps现在都包含一个树选项,或者一个非常恰当的名称相关实用程序,ptree.

由于我当前的工作系统没有ptree,我目前使用

ps fauw 

我想我也有一个

ps taux (t making more sense than f)

最后,有些 ps 还可以选择在视图中包含程序线程。

虽然这不是您(和我)希望的自动化解决方案,但我的经验是,进程树中会出现一系列“可能的嫌疑人”,只需扫描树,您通常就可以猜测问题出在哪里。

IHTH

相关内容