4

geektools を介してデスクトップで ps を使用して、どのプロセスが何を使用しているかを確認したいと考えています。現在、私のコマンドは次のとおりです。

ps -amcwwwxo "command %mem %cpu" | grep -v grep | head -13

これに関する問題は、私がクロムを使用しているため、プロセス「Google Chrome He」が13行のほとんどを占めることです。

同じ名前のすべてのプロセスのメモリと CPU の使用量を合計する方法はありますか? ps を介するか、別のコマンドを介してパイプします。

4

4 に答える 4

3

awkとを組み合わせて使用​​できますsort

(
printf "%-20s %-8s %-8s\n" "COMMAND" "%MEM" "%CPU"
/bin/ps -amcwwwxo "command %mem %cpu" | 
/usr/bin/awk -F" " '
BEGIN { 
  idx=0 
  format="%-20s /%-8s/ %-8s\n"
}
{
  idx = idx + 1
  col1=$0
  col2=$(NF-1)
  col3=$NF
  sub(/[[:space:]]+[^ ]+[[:space:]]+[^ ]+[[:space:]]*$/,"", col1)
  a[idx]=col1
  b[col1]+=col2
  c[col1]+=col3
}
END {
  for(i=2; i<=idx; i++) 
  {
    if (a[i] in b)
    {
      printf format, a[i], b[a[i]], c[a[i]]
      delete b[a[i]]
    }
  }
}
' | 
/usr/bin/sort -rn -t '/' -k 2,2 | /usr/bin/tr -d '/' | /usr/bin/head -n 15
)
于 2011-06-15T09:39:51.120 に答える
1

同じものを探して、私はこれを理解しました

ps aux | awk '{arr[$1]+=$4}; END {for (i in arr) {print i,arr[i]}}' | sort -k2

mem順に並べられ、ユーザーごとにグループ化されたプロセスを印刷するには(column1、$ 1)、他のものでグループ化し、他のものを合計して、$1と$4を変更できます。

  • $ 1は最初の列です:ユーザー名(これでグループ化)
  • $ 4は4番目の列です:%mem(これを合計)

私は解決策を見つけてうれしく思いました。ただ共有したかっただけです。

于 2012-06-04T01:35:04.803 に答える
0

それは存在しません、あなたはそれをするためにあなた自身のコード/コマンド/スクリプトを書くべきです。すべてのGoogleChromeヘルパープロセスは別個のプロセスであるため、親プロセスIDを使用してすべてのChromeプロセス(ヘルパー、プラグインホストなど)を計算するスクリプトを記述できる場合があります。

于 2011-06-14T19:04:45.713 に答える