我想知道Linux上单个进程的CPU和内存使用情况——我知道PID。希望我每秒钟都能得到它,并使用'watch'命令将其写入CSV。我可以使用什么命令从Linux命令行中获得这些信息?


当前回答

caf的答案是: Top -p <pid>

这将自动刷新CPU使用情况,因此非常适合监控。

其他回答

Ps命令(不应使用):

CPU使用率目前表示为进程整个生命周期中运行所花费时间的百分比。

最高命令(应使用):

自上次屏幕更新以来,任务占用CPU时间的份额,表示为总CPU时间的百分比。

使用top实时获取CPU使用情况(当前短间隔):

Top -b -n 2 -d 0.2 -p 6962 | tail -1 | awk '{打印$9}'

会像这样回响:78.6

- b:批处理模式 -n 2:迭代次数,使用2是因为:当你第一次运行它时,它没有前值 样本进行比较,因此这些初始值是启动后的百分比。 -d 0.2:延时时间(单位:秒,这里是200ms) -p 6962: monitor - pid 尾部-1:最后一行 Awk '{print $9}':第9列(CPU使用率)

要获得应用程序的内存使用情况(而不是它使用的共享库),需要使用Linux smaps接口。这个答案很好地解释了这一点。

ps -p <pid> -o %cpu,%mem,cmd

(您可以省略“cmd”,但这可能有助于调试)。

注意,这给出了进程在运行期间的平均CPU使用率。

caf的答案是: Top -p <pid>

这将自动刷新CPU使用情况,因此非常适合监控。

(如果你使用的是MacOS 10.10,试试top的cumulative -c选项:

top -c a -pid PID

(此选项在其他linux中不可用,尝试使用Scientific linux el6和RHEL6)