Linux/UNIXで、OS全体ではなく特定のプロセスで使用しているリソースのみを取得したい場合は、主に以下の2通りになるだろう。
1.psコマンドで取得する
psコマンドでは、「u」を付与することでCPUやメモリ使用率について取得することも出来る。
例えば、以下の例では全ユーザで実行している、topコマンドについてCPU・メモリ使用率を出力させている(中身はgrepっぽいので、そのものずばりだけ抽出出来ないけど)。
ps au -C top
[root@localhost ~]# ps au -C top
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 15680 0.0 0.0 115380 2040 pts/0 Ss 16:42 0:00 -bash
root 15759 0.0 0.0 115380 2020 pts/1 Ss 17:27 0:00 -bash
root 15776 0.1 0.0 146136 1928 pts/1 S+ 17:27 0:00 top
root 15787 0.0 0.0 139496 1572 pts/0 R+ 17:27 0:00 ps au -C top
root 23173 0.0 0.0 110028 816 tty1 Ss+ 1月04 0:00 /sbin/agetty --noclear tty1 linux
2.pidstatを用いる
sysstatをインストールしている環境であれば、pidstatを使ってプロセスごとのリソース消費量を調査することも出来る。
もしsysstatが無いようであれば、RHEL系・Debian系であれば以下のようにyum・aptでインストールすることができる。
RHEL系
yum install sysstat
Debian系
apt-get install sysstat
後は、以下のように指定することでvmstatと同じように使うことが出来る。
pidstat -p プロセスID 間隔 カウント数
[root@localhost ~]# ps -ef | grep top
root 15776 15759 0 17:27 pts/1 00:00:00 top
root 15848 15831 0 17:35 pts/2 00:00:00 top
root 15874 15680 0 17:38 pts/0 00:00:00 grep --color=auto top
[root@localhost ~]# pidstat -p 15776 1 10
Linux 3.10.0-327.el7.x86_64 (localhost.localdomain) 2016年01月20日 _x86_64_ (2 CPU)
17時38分40秒 UID PID %usr %system %guest %CPU CPU Command
17時38分41秒 0 15776 0.00 0.00 0.00 0.00 1 top
17時38分42秒 0 15776 0.00 0.00 0.00 0.00 1 top
17時38分43秒 0 15776 0.00 0.00 0.00 0.00 1 top
17時38分44秒 0 15776 0.00 0.00 0.00 0.00 1 top
17時38分45秒 0 15776 0.00 0.00 0.00 0.00 1 top
17時38分46秒 0 15776 0.00 0.00 0.00 0.00 1 top
17時38分47秒 0 15776 0.00 0.00 0.00 0.00 1 top
17時38分48秒 0 15776 0.00 0.00 0.00 0.00 1 top
17時38分49秒 0 15776 0.00 0.00 0.00 0.00 1 top
17時38分50秒 0 15776 0.00 0.00 0.00 0.00 1 top
平均値: 0 15776 0.00 0.00 0.00 0.00 - top
複数のプロセス番号を指定する場合は、「-p」で再度プロセス番号を指定してあげる事が出来る。
また、「-C」で実行されているコマンド名を指定することもできる。
[root@localhost ~]# ps -ef | grep top
root 15776 15759 0 17:27 pts/1 00:00:00 top
root 15848 15831 0 17:35 pts/2 00:00:00 top
root 15884 15680 0 17:40 pts/0 00:00:00 grep --color=auto top
[root@localhost ~]# pidstat -p 15776 -p 15848 1 3
Linux 3.10.0-327.el7.x86_64 (localhost.localdomain) 2016年01月20日 _x86_64_ (2 CPU)
17時40分58秒 UID PID %usr %system %guest %CPU CPU Command
17時40分59秒 0 15776 0.00 0.00 0.00 0.00 1 top
17時40分59秒 0 15848 0.00 0.00 0.00 0.00 1 top
17時40分59秒 UID PID %usr %system %guest %CPU CPU Command
17時41分00秒 0 15776 0.00 0.00 0.00 0.00 1 top
17時41分00秒 0 15848 0.00 0.00 0.00 0.00 1 top
17時41分00秒 UID PID %usr %system %guest %CPU CPU Command
17時41分01秒 0 15776 0.00 0.00 0.00 0.00 1 top
17時41分01秒 0 15848 0.00 0.00 0.00 0.00 1 top
平均値: UID PID %usr %system %guest %CPU CPU Command
平均値: 0 15776 0.00 0.00 0.00 0.00 - top
平均値: 0 15848 0.00 0.00 0.00 0.00 - top
[root@localhost ~]#
[root@localhost ~]# pidstat -C top 5 2
Linux 3.10.0-327.el7.x86_64 (localhost.localdomain) 2016年01月20日 _x86_64_ (2 CPU)
17時41分13秒 UID PID %usr %system %guest %CPU CPU Command
17時41分18秒 0 15776 0.20 0.00 0.00 0.20 1 top
17時41分18秒 UID PID %usr %system %guest %CPU CPU Command
17時41分23秒 0 15848 0.00 0.20 0.00 0.20 1 top
平均値: UID PID %usr %system %guest %CPU CPU Command
平均値: 0 15776 0.10 0.00 0.00 0.10 - top
平均値: 0 15848 0.00 0.10 0.00 0.10 - top