명령으로 시작
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}'