어떤 프로세스가 가장 많은 메모리를 사용하고 있는지 확인하고 사용된 총 메모리를 요약합니다.

어떤 프로세스가 가장 많은 메모리를 사용하고 있는지 확인하고 사용된 총 메모리를 요약합니다.

다음 명령을 통해 어떤 프로세스가 가장 많은 메모리를 사용하고 있는지 확인할 수 있습니다.

첫 번째 필드에는 각 프로세스에서 사용하는 값이 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"}'

또한 다른 많은 영리하고 때로는 강력한 작업도 수행할 수 있습니다. 그러나 그것들을 찾으려면 매뉴얼 페이지(또는 선사 시대에는 O'Reilly가 출판한 "책"이라고 불리는 것)를 봐야 하기 때문에 그들은 철저히 보호된 비밀로 남아 있으며, 현재 세계의 어느 누구도 이를 할 수 없습니다. .

모든 프로세스에서 사용하는 총 메모리를 계산하는 것이 "어떤 프로세스가 가장 많은 메모리를 사용하고 있는지 확인"하는 데 어떻게 도움이 될 수 있는지 이해하지 못합니다.

각 항목과 합계를 표시하려면 awk를 사용하여 다음을 수행할 수 있습니다.

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

메모리 크기를 줄이는(또는 늘리는) 순서로 항목을 정렬하려면,암소 비슷한 일종의 영양awk(유일한 구현은 아니지만 일반적인 구현)가 이를 수행할 수 있지만 Unix에서는 sort이미 프로그램을 사용하는 것이 더 편리한 경우가 많습니다.

관련 정보