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


当前回答

我用htop

sudo apt install htop
htop

按F3查找感兴趣的进程,记住PID。用q退出并再次启动htop,只显示您想要的进程

htop -p $PID

其他回答

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

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

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

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

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

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

正如上面caf的回答中所评论的那样,ps和在某些情况下pidstat将为您提供pCPU的生命周期平均值。 要获得更准确的结果,请使用top。如果你需要跑到顶部,你可以跑:

top -b -n 1 -p <PID>

或者仅用于进程数据和报头:

top -b -n 1 -p <PID> | tail -3 | head -2

没有头文件:

top -b -n 1 -p <PID> | tail -2 | head -1