読者です 読者をやめる 読者になる 読者になる

clock-up-blog

go-mi-tech

tasklist と Cygwin(grep, sed, gawk) の組み合わせで複数プロセスの合計メモリ使用量を得る

Windows Cygwin grep awk sed

概要

たとえば Chrome なんかの場合はウィンドウをひとつ立ち上げるだけで複数プロセスが稼動するので、
タスクマネージャとかで一覧眺めても総メモリ使用量がわかりにくい。

それを簡単に計算・表示する方法。(要 Cygwin)

前提条件

Cygwin (grep, sed, gawk が含まれていること) がインストールされていること。

とりあえず先に方法を

せっかちさん向け。

> tasklist | grep {プロセス名} | sed -e s/,// | gawk '{total = total + $5} END{print total " KB"}'

これで対象プロセスの総メモリ使用量が出ます。

以下、解説。

まず、プロセス一覧

tasklist コマンドでプロセス一覧とそれぞれのメモリ使用量を得ることができます。

> tasklist

イメージ名                     PID セッション名     セッション# メモリ使用量
========================= ======== ================ =========== ============
System Idle Process              0 Services                   0         24 K
System                           4 Services                   0        336 K
smss.exe                       364 Services                   0      1,196 K
csrss.exe                      628 Services                   0      6,000 K
wininit.exe                    688 Services                   0      5,624 K
csrss.exe                      708 Console                    1     32,580 K
services.exe                   752 Services                   0      9,792 K
lsass.exe                      768 Services                   0     12,328 K
…

絞り込む

grep で目的のプロセスだけに絞り込みます。
3タブしか開いてなくてもこのザマです。

> tasklist | grep chrome
chrome.exe                    8464 Console                    1    233,936 K
chrome.exe                    8776 Console                    1     63,404 K
chrome.exe                    4308 Console                    1     22,684 K
chrome.exe                    6768 Console                    1     19,780 K
chrome.exe                     820 Console                    1     28,948 K
chrome.exe                    7452 Console                    1     21,144 K
chrome.exe                    5560 Console                    1     21,676 K
chrome.exe                    2568 Console                    1     20,232 K
chrome.exe                    8952 Console                    1     23,772 K
chrome.exe                     400 Console                    1     25,248 K
chrome.exe                    5428 Console                    1     21,836 K
chrome.exe                    9084 Console                    1     20,596 K
chrome.exe                    7272 Console                    1     22,880 K
chrome.exe                    6468 Console                    1     42,652 K
chrome.exe                    5064 Console                    1     69,212 K
chrome.exe                    4356 Console                    1     21,804 K
chrome.exe                     396 Console                    1    123,428 K

コンマを削る

sed でコンマを空文字列に置換します。

> tasklist | grep chrome | sed -e s/,//
chrome.exe                    8464 Console                    1    234760 K
chrome.exe                    8776 Console                    1     65568 K
chrome.exe                    4308 Console                    1     22684 K
chrome.exe                    6768 Console                    1     19792 K
chrome.exe                     820 Console                    1     28948 K
chrome.exe                    7452 Console                    1     21144 K
chrome.exe                    5560 Console                    1     21816 K
chrome.exe                    2568 Console                    1     20232 K
chrome.exe                    8952 Console                    1     23808 K
chrome.exe                     400 Console                    1     25344 K
chrome.exe                    5428 Console                    1     21860 K
chrome.exe                    9084 Console                    1     20596 K
chrome.exe                    7272 Console                    1     22880 K
chrome.exe                    6468 Console                    1     42652 K
chrome.exe                    5064 Console                    1     69528 K
chrome.exe                    4356 Console                    1     21812 K
chrome.exe                     396 Console                    1    145180 K

合計する

gawk で5つ目のカラムの合計値を計算します。

> tasklist | grep chrome | sed -e s/,// | gawk '{total = total + $5} END{print total " KB"}'
829588 KB

800MBも使ってるぞー!!\(^o^)/

});