回答:
を使用ps -C
して、特定のコマンド名のプロセス情報のみを表示できます。
例えば
ps -C opera
その後、他のps
オプションを使用して、探しているデータだけを抽出できます。特に、h
または--no-headers
列ヘッダーを抑制-o pmem
し、プロセスで使用されるメモリの割合を表示します。
ps -C opera --no-headers -o pmem
これにより、1行に1つずつ、大量のメモリ使用率が得られます。
そのようなデータを合計する方法は数多くあります。私が頻繁に使用する方法の1つは、xargsにパイプして、スペースで区切られた要素を持つ1行に変換し、次にsedに入れてスペースを+
シンボルに変換し、次にbc
を実行して計算。にパイプする方法は、とpaste -sd+
同じかそれよりも間違いなく優れてい| xargs | sed
ます。
これらすべてをまとめると、次のようになります。
ps -C opera --no-headers -o pmem | xargs | sed -e 's/ /+/g' | bc
または
ps -C opera --no-headers -o pmem | paste -sd+ | bc
つまり、ps -C
特定の実行中のプログラムに関するデータだけが必要な場合は、複数のgrepsの代わりに使用できます。
注:一度に複数の-C
プログラムに関する情報が必要な場合は、同じコマンドラインで複数のオプションを使用できます。例えば
ps -C iceweasel -C chromium -C opera
ps h -C java -o pmem,args | awk '/foo/ {print $1}' | ...
たとえば、fooというJavaプログラムを探すことは常にあります。
あなたはシェルスクリプトを作ることができます
#!/bin/bash
Total=`cat /proc/meminfo | head -n1 | awk '{print $2}'`
max_usage=`ps ax -o pmem,fname | sort -r | head -n2 | tail -n1 | awk '{print $1}'`
name=`ps ax -o pmem,fname | sort -r | head -n2 | tail -n1 | awk '{print $NF}'`
echo "$Total $max_usage $name"
echo "($max_usage*$Total)/(100*1024)" | bc
これにより、最高のメモリ使用量アプリケーションが得られます。
sed -e 's/^[[:space:]]*//'
それを修正するようなものを追加すると思います。また、スクリプトは同じコマンドでプロセスのメモリ使用量を合計しますか?