列出运行最大 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}'

相关内容