我想在Linux上单个进程的CPU和内存使用情况 - 我知道PID。 希望我能得到它的每一秒。使用“看”命令将其写入CSV。 什么命令我可以用它来获取从Linux命令行这个信息?
Answer 1:
ps -p <pid> -o %cpu,%mem,cmd
(可以去掉“CMD”,但可能会在调试有用)。
请注意,这给了进程已运行的时间平均CPU使用率。
Answer 2:
的一个变种CAF的回答 : top -p <pid>
这种自动刷新CPU使用率所以这是很好的监控。
Answer 3:
您可以使用该进程的名称得到的结果
ps -C chrome -o %cpu,%mem,cmd
在-C
选项允许你不知道它进程的PID使用进程名。
Answer 4:
使用pidstat(从SYSSTAT - 参见链接 )。
例如监测这两个进程ID(12345和11223)每5秒使用
$ pidstat -h -r -u -v -p 12345,11223 5
Answer 5:
启动程序和监督它
如果你想基准可执行容易这种形式是非常有用的:
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。
Answer 6:
正如评论在咖啡馆的回答以上,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
Answer 7:
您可以使用top -b
和grep出你想要的PID(与-b
标志之上运行在批处理模式下),或同时使用-p
标志和不使用grep的指定PID。
Answer 8:
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
Answer 9:
ps aux|awk '{print $2,$3,$4}'|grep PID
其中第一列是PID,第二列的CPU使用率,第三列的内存使用情况。
Answer 10:
ps
命令(不宜用):
- CPU使用率目前表现为时间的百分比进程的整个一生中花在运行。
top
命令(应使用):
- 自上次屏幕更新经过的CPU时间的任务的份额,表示为CPU总时间的百分比。
使用top
得到实时的CPU使用率(当前短的时间间隔):
top -b -n 2 -d 0.2 -p 6962 | tail -1 | awk '{print $9}'
回音必像: 78.6
-
-b
:批处理模式 -
-n 2
:数的迭代,用2
因为: 当你第一次运行它,它没有先前的样本进行比较的,所以这些初始值是自启动的百分比。 -
-d 0.2
:延迟时间(在第二,这里是200毫秒) -
-p 6962
:监控-的PID -
tail -1
:最后一排 -
awk '{print $9}'
:9的第n列(CPU使用率数)
Answer 11:
得到的只是你的应用程序的内存使用量(相对于它所使用的共享库,你需要使用Linux smaps接口)。 这个答案解释得很好 。
Answer 12:
ps axo pid,etime,%cpu,%mem,cmd | grep 'processname' | grep -v grep
PID - 进程ID
ETIME - 运行过程中/直播时间
%的CPU - CPU使用率
%MEM - 内存使用
CMD - 命令
你要跟踪的任何程序替换processname,MySQL的nginx的PHP-FPM等..
Answer 13:
这里所有的答案只显示了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
Answer 14:
(如果你是在MacOS上10.10,尝试顶部的累计-c选项:
top -c a -pid PID
(此选项在其他Linux可用,用科学的Linux EL6和RHEL6试过)
Answer 15:
上面所列内容出前cpu和内存耗时的过程
ps axo %cpu,%mem,command | sort -nr | head
Answer 16:
对于那些谁挣扎了一会儿wonderring为什么选择的答案不工作:
ps -p <pid> -o %cpu,%mem
没有足够的空间ibetween %cpu,
和%mem
。
Answer 17:
在Linux或在一台处理的CPU和内存使用可以通过使用下面的命令得到的前10 CPU利用工艺
PS AUX --sort -pcpu | 头-n 11