최대 CPU 사용량으로 최대 프로세스 수를 실행하는 사용자 나열

최대 CPU 사용량으로 최대 프로세스 수를 실행하는 사용자 나열

명령으로 시작

ps -eo user,pcpu,pid,args | sort -rnk 3 | head -30

이 명령의 출력을 가장 많은 프로세스가 있고 CPU 사용량을 소비하는 csv 파일로 구문 분석하려면 어떻게 해야 합니까? 어떤 제안이라도

답변1

당신은 그것을 사용할 수 있습니다밀러, 그런 다음 실행

ps -eo user,pcpu | mlr  --n2c  --repifs -N cat | mlr --csv stats1 -f "%CPU" -a count,sum -g USER

이런 것을 얻으세요

사용자 %CPU_count %CPU_sum
뿌리 8 0.000000
사용자 이름 8 0.200000
mysql 1 0.000000
www-데이터 5 0.000000

답변2

ps -eo user,pmem,pcpu,pid,args --no-headers | sort -rnk 3,3 | head -n30 | awk '{ print $1 "," $3 "," $5 }'

그렇지 않으면 헤더 행이 출력에 나타나는 경우가 있기 때문에 이 --no-headers옵션이 추가되었습니다 . ps이는 출력 필드에 쉼표가 전혀 없다고 가정하므로 CSV 이스케이프 로직이 필요하지 않습니다. CSV 이스케이프 논리가 정말로 필요한 경우 Python이나 다른 언어로 작성하고 이 모듈을 사용해야 합니다. CSV 이스케이프 논리는 어렵습니다.

답변3

이것은 당신에게 도움이 될 수 있습니다:

ps -eo user,pmem,pcpu,pid,args | sort -rnk 3 | head -30 | awk '{OFS=","; print $1,$3,$5}'

편집하기 전 첫 번째 질문에 대한 답변입니다.

답변4

조금 더러울 수도 있지만 효과적입니다.

ps -eo user,pmem,pcpu,pid,args --no-headers | sort -rnk 3,3 | head -n 30 | awk '{ print $1 "," $3 "," $5 " " $6 " " $7 " " $8 " " $9 " " $10 " " $11 " " $12 " " $13}'

관련 정보