awk를 사용하여 프로세스 이름별로 그룹화하고 메모리 및 CPU 사용량을 요약하는 방법은 무엇입니까?

awk를 사용하여 프로세스 이름별로 그룹화하고 메모리 및 CPU 사용량을 요약하는 방법은 무엇입니까?

아래와 같이 %cpu, %mem 및 프로세스 이름을 포함하는 ps 출력 파일 이름 ps가 있습니다.

3.0     0.1     php-fpm: pool www
2.0     0.1     php-fpm: pool www
1.0     0.1     php-fpm: pool www
9.0     0.1     chrome
9.0     0.1     chrome 

동일한 프로세스의 CPU 및 메모리 사용량을 요약하고 싶습니다. 따라서 예상되는 출력은 다음과 같습니다.

6.0     0.3     php-fpm: pool www
18.0    0.2     chrome

현재 저는 awk 'BEGIN { FS=OFS=SUBSEP="\t"}{arr[$3]+=$1 }END {for (i in arr) print arr[i], i}' ps단일 열을 요약하는 데 을 사용하고 있으므로

6.0         php-fpm: pool www
18.0        chrome

이를 달성하려면 어떻게 해야 합니까?

답변1

두 개의 배열 사용

awk 'BEGIN { FS=OFS="\t"}{a0[$3]+=$1; a1[$3]+=$2 }END {for (i in a0) print a0[i], a1[i], i}'

관련 정보