2012年5月26日土曜日

特定のプロセスが使用しているメモリ量を監視する

どうも、俺@土曜の昼下がりです。 部屋に無理やり書斎(みたいなもの)を作ったのでとても快適です^^ さて、Linuxサーバにおいて特定のプロセスが使ってるメモリ量を調べる方法メモです。
#!/bin/sh

mem=0 #メモリ量
bef=0 #beforeの略のつもり
res=0 #結果
# 仮にapache(httpd)のメモリ量を取得する場合
while [ 1 ]
do  
    for n in `/bin/ps aux | awk '/httpd/ { print $6 }'`
    do
        mem=`expr $mem + $n`
    done
    res=`expr ${mem} - ${bef}`

    # メモリ量($mem)と前回との差分($res)を表示
    echo `date "+%F %T (${mem}) -> ${res}"`
    
    bef=$mem
    mem=0

    # 1秒ごとに処理
    sleep 1;
done
これを、apache_memorycheck.shとか名前をつけて
$ chmod +x apache_memorycheck.sh
して実行すれば 1秒ごとにapacheが使っているメモリ量と、1秒前との差分を表示できます!


$ ps axu
した結果の「RSS」の部分がプロセスが確保している物理メモリ量なので、それをawkを使って加算して計算しています。
ちなみに「VSZ」は仮想メモリ量です。(プロセス起動時にとりあえず確保される)

 以上でぇぇえぇえす。

0 件のコメント: