今読み書きしているプロセスを探す

何もやっていないのにディスクがカリカリいってる。おかしいな、何が動き出したんだろう。ということがついさっきあった。

Linuxではsysstatに含まれるpidstatを使うのが手っとり早いようだ(pidstatはsysstat 7.1.4以降に含まれている)。pidstatはプロセスの状態を報告するツールでvmstatなどと似た動作をする。

ディスクIOの様子を見るには-dオプションと、通常はインターバル、報告回数を与えて実行する。

$ pidstat -d 5 3
Linux 2.6.26-1-686-bigmem (hoge)    2009年04月03日   _i686_  (2 CPU)

09時00分50秒       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
09時00分55秒      1060      0.00     19.16      0.00  kjournald
09時00分55秒      3715      1.60      3.19      0.00  thunderbird-bin

09時00分55秒       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
09時01分00秒      1060      0.00      0.80      0.00  kjournald
09時01分00秒      1946      0.00      2.40      1.60  zsh

09時01分00秒       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
09時01分05秒      1060      0.00     24.00      0.00  kjournald
09時01分05秒      1946      0.00      0.80      0.80  zsh
09時01分05秒     23587      0.00      1.60      0.00  apache2

平均値:        PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
平均値:       1060      0.00     14.66      0.00  kjournald
平均値:       1946      0.00      1.07      0.80  zsh
平均値:       3715      0.53      1.07      0.00  thunderbird-bin
平均値:      23587      0.00      0.53      0.00  apache2

-pオプションによりプロセスIDを指定すれば、そのプロセスのIO状態を追跡することもできる。なお、pidstatのこの機能を使うにはLinux 2.6.20以降でなければならないようだ(pidstat(1)より)。