다음 명령을 통해 어떤 프로세스가 가장 많은 메모리를 사용하고 있는지 확인할 수 있습니다.
첫 번째 필드에는 각 프로세스에서 사용하는 값이 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"}'
또한 다른 많은 영리하고 때로는 강력한 작업도 수행할 수 있습니다. 그러나 그것들을 찾으려면 매뉴얼 페이지(또는 선사 시대에는 O'Reilly가 출판한 "책"이라고 불리는 것)를 봐야 하기 때문에 그들은 철저히 보호된 비밀로 남아 있으며, 현재 세계의 어느 누구도 이를 할 수 없습니다. .
모든 프로세스에서 사용하는 총 메모리를 계산하는 것이 "어떤 프로세스가 가장 많은 메모리를 사용하고 있는지 확인"하는 데 어떻게 도움이 될 수 있는지 이해하지 못합니다.
각 항목과 합계를 표시하려면 awk를 사용하여 다음을 수행할 수 있습니다.
ps aux | awk '{print $6/1024 "\t\t" $1; t+=$6} END{print t/1024 "\t\tTOTAL"}'
메모리 크기를 줄이는(또는 늘리는) 순서로 항목을 정렬하려면,암소 비슷한 일종의 영양awk(유일한 구현은 아니지만 일반적인 구현)가 이를 수행할 수 있지만 Unix에서는 sort
이미 프로그램을 사용하는 것이 더 편리한 경우가 많습니다.