'ps'가 프로세스를 병합할 수 있나요?

'ps'가 프로세스를 병합할 수 있나요?

어떤 프로세스가 RAM을 점유하는지 표시하는 명령을 만들었습니다.

alias psmem='ps -eo user,pid,pcpu,pmem,args --sort -pmem --columns $(tput cols) | head -25'

그러나 출력은 일반적으로 다음과 같습니다.

USER         PID %CPU %MEM COMMAND
barafu      2113  5.8  2.4 /usr/lib/chromium/chromium --type=renderer --enable-oop-rasterization --field-trial-handle=
barafu      1489  4.6  1.8 /usr/lib/chromium/chromium --type=gpu-process --field-trial-handle= --enable-gpu-raster
barafu      2765  0.6  1.8 /usr/lib/chromium/chromium --type=renderer --enable-oop-rasterization --field-trial-handle=
barafu      1460  1.7  1.7 /usr/lib/chromium/chromium --password-store=basic --ignore-gpu-blacklist --enable-gpu-rasterization --enable-zero-copy --enable-oop-
barafu      1326  2.0  1.5 cinnamon --replace
barafu      1594  0.1  1.3 /usr/lib/chromium/chromium --type=renderer --enable-oop-rasterization --field-trial-handle=

질문:ps크롬에 이 모든 항목을 하나의 항목으로 결합하도록 지시하는 방법이 있나요 ?

답변1

ps출력 세분성은 단일 프로세스 또는 스레드로 제한되며 프로세스를 병합할 수 없습니다. 출력을 사후 처리해야 합니다.

다음과 같이 시작하면 됩니다.

ps -eo user=,pid=,pcpu=,pmem=,args= --sort -pmem --columns $(tput cols) |
awk '{ cpu[$1][$5] += $3; mem[$1][$5] += $4 } END { for (user in cpu) { for (cmd in cpu[user]) { print user, cpu[user][cmd], mem[user][cmd], cmd } } }' |
sort -k3,3nr | head -n 25

관련 정보