Linuxで実行中のプロセスごとのメモリ使用量を知りたいなぁと思い調べてみた。方法はいろいろとあるが、今回はpsコマンドを使ってみる。
いろいろオプションを試してみる
ひとまずpsしてみた。
$ ps PID TTY TIME CMD 4659 pts/0 00:00:01 bash 5196 pts/0 00:00:00 ps
PIDはプロセスIDのことでCMDはコマンドの名前。 次に l オプションをつける。
$ ps l F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND 0 1000 4659 4658 20 0 115844 3668 wait Ss pts/0 0:01 -bash 0 1000 5366 4659 20 0 109436 816 - R+ pts/0 0:00 ps l
なんかいっぱい出た。RSSってのが使用中のメモリで単位はkB (キロバイト)。今回はこれが重要。 次に ax オプションをつける。
$ ps ax PID TTY STAT TIME COMMAND 1 ? Ss 2:53 /usr/lib/systemd/systemd --system --deserialize 22 2 ? S 0:01 [kthreadd] 3 ? S 2:10 [ksoftirqd/0] 5 ? S< 0:00 [kworker/0:0H] 7 ? S< 0:00 [kworker/u:0H] 8 ? S 0:03 [migration/0] 9 ? S 0:00 [rcu_bh] 10 ? S 12:02 [rcu_sched] (以下略)
めっちゃいっぱい出た。ax は全てのプロセスを表示する。 axlを指定すれば全てのプロセスの詳細が見られるので、それをgrepすれば目当てのプロセスのメモリ使用量などがわかる。ただ、コマンド名がわかっている時は -C で表示するコマンド名を指定できる。
$ ps l -C bash F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND 0 1000 4659 4658 20 0 115844 3660 wait Ss pts/0 0:01 -bash
また -o で表示する項目も指定可能。
$ ps -o rss,cmd -C bash RSS CMD 3660 -bash
その他詳しいオプションなどはmanを参照のこと。