如何logging每个进程的CPU使用率?

我有一个Linode的盒子,正在经历奇怪的行为。 每隔一段时间,CPU和磁盘I / O将会发射到100%,并且服务器变得无响应,并且必须启动。 我想更好地调查发生了什么事情,但我不知道如何find谁负责所有的CPU和I / O。 我正在运行Gentoo 2.6.18。

你可以尝试做这样的事情:

while true; do ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10 >> logfile.txt; echo "\n" >> logfile.txt; sleep 3; done

这将显示CPU使用率方面的十大进程。 您可以通过将“头-10”中的10更改为不同的数字来更改显示的进程数,以及通过更改“睡眠3”中的3或完全取出“睡眠3”部分来更新的次数。

检查一下,它会写几乎所有你可能想要的二进制日志,然后你可以使用像GUI一样的顶部去审阅一天的时间片(默认是每5分钟取一次数据)。 http://www.atcomputing.nl/Tools/atop/

我认为, 慕尼黑是监控的商品工具之一,可以帮助您获得关于您的箱子活动的一些信息。 另外,还有一些像sar ,iostat,ps,top等命令行工具。

其他的答案只显示了你如何看待当前正在进行的事情,如果系统已经重新启动,这并没有什么帮助。

如果你想为后人logging这些信息(或账单,或者其他可能的用途),你想要的是进程记账。

这是我发现的一个HOWTO,但是我会诚实的 – 我已经使用了stream程会计已经有十年了。

http://tldp.org/HOWTO/Process-Accounting/

Shawn的解决scheme用于近实时监控的更友好的方法:

 while true; do clear; ps -eo pcpu,pmem,pid,user,args --sort=-pcpu c|head -20; sleep 1; done 

这将提供前20个进程的静态视图,每1秒刷新一次。 ps命令中的“c”选项将打印进程可执行文件名称,而不是整个args命令。 如果您需要整个命令信息,则可以省略此选项。 %内存使用量列也被添加。

Gentoo没有“top”命令吗?

 machine:~/# top 

应该给你哪些程序导致最多负载的运行状态。