检索Linux上的单一进程的CPU使用率和内存使用情况?

问题描述 投票:149回答:17

我想在Linux上单个进程的CPU和内存使用情况 - 我知道PID。希望我能得到它的每一秒。使用“看”命令将其写入CSV。什么命令我可以用它来获取从Linux命令行这个信息?

linux shell memory-management cpu-usage
17个回答
210
投票
ps -p <pid> -o %cpu,%mem,cmd

(可以去掉“CMD”,但可能会在调试有用)。

请注意,这给了进程已运行的时间平均CPU使用率。


2
投票
ps aux|awk  '{print $2,$3,$4}'|grep PID

其中第一列是PID,第二列的CPU使用率,第三列的内存使用情况。


1
投票

得到的只是你的应用程序的内存使用量(相对于它所使用的共享库,你需要使用Linux smaps接口)。 This answer explains it well


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

PID - 进程ID

ETIME - 运行过程中/直播时间

%的CPU - CPU使用率

%MEM - 内存使用

CMD - 命令

你要跟踪的任何程序替换processname,MySQL的nginx的PHP-FPM等..


1
投票

这里所有的答案只显示了PID内存百分比。

这里有一个如何得到RSS内存使用在KB所有Apache进程,和“grep PID”取代“grep的阿帕奇”如果你只想看一个具体PID的例子:

watch -n5 "ps aux -y | grep apache | awk '{print \$2,\$6}'"

这将打印:

Every 5.0s: ps aux -y | grep apache | awk '{print $2,$6}'                                                                                                                                                                                                          
Thu Jan 25 15:44:13 2018

12588 9328
12589 8700
12590 9392
12591 9340
12592 8700
12811 15200
15453 9340
15693 3800
15694 2352
15695 1352
15697 948
22896 9360

随着CPU%:

watch -n5 "ps aux -y | grep apache | awk '{print \$2,\$3,\$6}'"

输出:

Every 5.0s: ps aux -y | grep apache | awk '{print $2,$3,$6}'                                                                                                                                                                                                       
Thu Jan 25 15:46:00 2018

12588 0.0 9328
12589 0.0 8700
12590 0.0 9392
12591 0.0 9340
12592 0.0 8700
12811 0.0 15200
15453 0.0 9340
15778 0.0 3800
15779 0.0 2352
15780 0.0 1348
15782 0.0 948
22896 0.0 9360

1
投票

对于那些谁挣扎了一会儿wonderring为什么选择的答案不工作:

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

qazxsw POI和POI qazxsw之间没有空格。


1
投票

这是一个很好的把戏实时跟踪一个或多个程序,同时还观看了一些其他工具的输出:%cpu,


0
投票

(如果你是在MacOS上10.10,尝试顶部的累计-c选项:

%mem

(此选项在其他Linux可用,用科学的Linux EL6和RHEL6试过)


0
投票

上面所列内容出前cpu和内存耗时的过程

watch "top -bn1 -p$(pidof foo),$(pidof bar); tool"

-2
投票

在Linux或在一台处理的CPU和内存使用可以通过使用下面的命令得到的前10 CPU利用工艺

PS AUX --sort -pcpu |头-n 11


62
投票

caf's answer的变体:top -p <pid>

这种自动刷新CPU使用率所以这是很好的监控。


31
投票

您可以使用该进程的名称得到的结果

ps -C chrome -o %cpu,%mem,cmd

-C选项允许你不知道它进程的PID使用进程名。


23
投票

使用pidstat(从SYSSTAT - Refer Link)。

例如监视这两个进程ID(12345和11223)每5秒使用

$ pidstat -h -r -u -v -p 12345,11223 5

11
投票

启动程序和监督它

如果你想基准可执行容易这种形式是非常有用的:

topp() (
  $* &>/dev/null &
  pid="$!"
  trap ':' INT
  echo 'CPU  MEM'
  while sleep 1; do ps --no-headers -o '%cpu,%mem' -p "$pid"; done
  kill "$pid"
)
topp ./myprog arg1 arg2

现在,当你按下Ctrl + C退出程序并停止监控。输出示例:

CPU  MEM
20.0  1.3
35.0  1.3
40.0  1.3

相关:https://unix.stackexchange.com/questions/554/how-to-monitor-cpu-memory-usage-of-a-single-process

经测试在Ubuntu 16.04。


5
投票

正如评论中caf's answer以上,PS和在某些情况下pidstat会给你PCPU的一生中平均。为了得到更准确的结果用顶部。如果您需要在上面运行,一旦你可以运行:

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

4
投票

你可以使用top -b和grep出你想要的PID(与-b旗顶在批处理模式下运行),或同时使用-p标志和不使用grep的指定PID。


4
投票
ps aux | awk '{print $4"\t"$11}' | sort | uniq -c | awk '{print $2" "$1" "$3}' | sort -nr

或每个进程的

ps aux | awk '{print $4"\t"$11}' | sort | uniq -c | awk '{print $2" "$1" "$3}' | sort -nr |grep mysql

4
投票

ps命令(不宜用):

top命令(应使用):

使用top来实时获取CPU使用率(当前短的时间间隔):

top -b -n 2 -d 0.2 -p 6962 | tail -1 | awk '{print $9}'

回音必像:78.6

© www.soinside.com 2019 - 2024. All rights reserved.