通过以下命令我们可以检查哪个进程正在使用最多的内存
我们可以看到第一个字段以 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
系统的统计信息。只需参考他们的页面即可获取更多信息。sar
free
vmstat
pidstat
top
man
答案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
可用的程序通常更方便。