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


当前回答

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使用率)

其他回答

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使用率)

对于那些纠结了一段时间,想知道为什么选定的答案不管用的人:

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

%cpu和%mem之间没有空格。

ps axo pid,etime,%cpu,%mem,cmd | grep 'processname' | grep -v grep

PID -进程号

etime -进程运行/活时长

%cpu - cpu使用率

%mem -内存使用率

cmd -命令

将processname替换为任何你想跟踪的进程,mysql nginx php-fpm等等…

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

你可以使用top -b和grep输出你想要的pid(带-b标志的top在批处理模式下运行),或者也可以使用-p标志并指定pid而不使用grep。