我正在尝试将 top 的结果合并到一个 ruby 程序中。但是当在 ruby 的子 shell 中调用时,top 的行为与直接在 shell 中运行时不同。具体来说,当从 ruby 运行时,它会排除许多结果。
例如,top -bn1 | wc -l
在 bash 中运行会返回“133”。使用反引号从 irb 运行相同的命令会返回“17”。
为什么从 shell 调用 top 和从子 shell 调用有区别?如何在 ruby 脚本中获得 top 的完整输出?
笔记
我正在运行 Ubuntu 12.04.1 LTS(精确)。这个问题不会出现在 mac OS X 上,它提供了完全不同的 top 版本。
使用“-d”延迟标志似乎并没有改变行为。也不会增加迭代次数。
我知道 ps 返回许多与 top 相同的统计信息,但我对 top 对 CPU 使用率的估计特别感兴趣,它的计算方式不同。