检查哪个进程正在使用最多内存并汇总已用内存总量

检查哪个进程正在使用最多内存并汇总已用内存总量

通过以下命令我们可以检查哪个进程正在使用最多的内存

我们可以看到第一个字段以 MB 为单位显示每个进程使用的值

awk 是否可以对所有数字求和并获得最终使用的数字(以 MB 为单位)?

例如

24738.3 MB

该命令显示所有进程及其使用的MB(内存)

ps aux  | awk '{print $6/1024 " MB\t\t" $01}'  | sort -n



4.74609 MB              postgres
5.01562 MB              postgres
5.19922 MB              postgres
5.3125 MB               postgres
5.33203 MB              postgres
5.35156 MB              postgres
5.43359 MB              postgres
5.53906 MB              WEPLO_qw
5.56641 MB              postgres
5.56641 MB              postgres
5.64062 MB              WEPLO_qw
5.65234 MB              postgres
5.68359 MB              postgres
5.75391 MB              postgres
5.97656 MB              postgres
6.33594 MB              postgres
6.55469 MB              postgres
6.57031 MB              postgres
6.60547 MB              postgres
6.63672 MB              postgres
7 MB            postgres
7.81641 MB              postgres
8.07812 MB              postgres
9.67578 MB              postgres
10.0234 MB              YTE
11.5156 MB              YTE
14.8828 MB              HTE_DS
15.2305 MB              hdfs
16.9297 MB              postgres
18.0781 MB              postgres
18.1172 MB              postgres
18.2812 MB              postgres
19.2695 MB              WEPLO_qw
21.1055 MB              postgres
21.1914 MB              postgres
21.6367 MB              postgres
21.9062 MB              postgres
23.5078 MB              postgres
24.4727 MB              polkitd
27.0938 MB              postgres
27.4375 MB              apache
28.0234 MB              apache
28.6445 MB              WEPLO_qw
29 MB           apache
30.4336 MB              apache
30.5664 MB              apache
32.4727 MB              apache
32.9023 MB              apache
50.1758 MB              WEPLO_qw
69.3398 MB              HTE_DS
72.7852 MB              HTE_DS
72.7891 MB              HTE_DS
72.7969 MB              HTE_DS
72.8008 MB              HTE_DS
72.8047 MB              HTE_DS
72.8125 MB              HTE_DS
72.8242 MB              HTE_DS
72.8281 MB              HTE_DS
72.832 MB               HTE_DS
72.8359 MB              HTE_DS
72.8438 MB              HTE_DS
72.8477 MB              HTE_DS
72.8516 MB              HTE_DS
72.8555 MB              HTE_DS
72.8594 MB              HTE_DS
72.8633 MB              HTE_DS
73.6602 MB              HTE_DS
74.418 MB               HTE_DS
75.2188 MB              HTE_DS
76.6641 MB              HTE_DS
76.75 MB                HTE_DS
78.4688 MB              HTE_DS
78.9492 MB              HTE_DS
85.2031 MB              WEPLO_qw
87.2344 MB              gdm
87.6367 MB              WEPLO_qw
100.711 MB              hdfs
114.703 MB              hdfs
132.32 MB               rabbitmq
191.383 MB              hdfs
204.285 MB              hdfs
298.152 MB              hdfs
360.168 MB              hdfs
360.402 MB              mapred
383.41 MB               Jko_+
387.973 MB              HTE_DS
412.961 MB              hdfs
499.574 MB              hdfs
562.395 MB              hdfs
689.383 MB              hdfs
802.691 MB              WEPLO_qw
886.816 MB              YTE
1017.73 MB              PLOT
1531.73 MB              zookeep+
1566.29 MB              HUT_OP
1739.48 MB              kafka
2275.65 MB              YTE
2738.92 MB              Grt-worker
4222.77 MB              anti-spam

答案1

尝试这个 ,

如果您想添加 中的内存列的总计ps aux

ps aux  | awk '{print $6/1024}'  | xargs  | sed -E 's/ /+/g' | bc

这将为您提供以兆字节为单位的答案。

另一方面,您还可以使用、、、或 来检查memory系统的统计信息。只需参考他们的页面即可获取更多信息。sarfreevmstatpidstattopman

答案2

是的 awk 可以添加:

ps aux | awk '{t+=$6} END{print t/1024 "MB"}'
# or if you prefer to be explicit
ps aux | awk '{t=t+$6} END{print t/1024 "MB"}'
# or even more explicit (though awk does NOT need this)
ps aux | awk 'BEGIN{t=0} {t=t+$6} END{print t/1024 "MB"}'

它还可以做很多其他聪明的、有时甚至是强大的事情。但它们仍然是严格保守的秘密,因为要找到它们,您必须查看手册页(或者在史前时代,是奥莱利出版的一种称为“书”的东西),而现代世界没有人能做到这一点。

我不明白计算所有进程使用的总内存如何帮助您“检查哪个进程使用最多的内存”。

如果您想要显示每个项目和总数,awk 可以做到这一点:

ps aux | awk '{print $6/1024 "\t\t" $1; t+=$6} END{print t/1024 "\t\tTOTAL"}'

如果您想按内存大小递减(或递增)的顺序对项目进行排序,GNUawk(一种常见的实现,但不是唯一的实现)可以做到这一点,但在 Unix 上,已有一个sort可用的程序通常更方便。

相关内容