コマンドで始まる
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}'