LinuxでメモリやCPUを多く消費していて、パフォーマンスに影響を及ぼしているプロセスを調べたいときに便利なコマンドを2つ紹介します。
# メモリの使用量が多い順にプロセスを表示
ps aux | sort -nrk +4 | head
# CPUの使用量が多い順にプロセスを表示
ps aux | sort -nrk +3 | head
実行例は以下のような形になります。
$ ps aux | sort -nrk +4 | head
root 1413 0.0 6.8 112708 34532 ? Sl 04:22 0:00 ruby /usr/bin/chef-client -d -P /var/r...
root 1201 0.0 6.8 182540 34432 ? Ssl 04:22 0:00 /usr/bin/ruby /usr/bin/puppet agent
root 1477 0.0 0.8 107720 4248 ? Ss 04:22 0:00 sshd: vagrant [priv]
vagrant 1542 0.0 0.7 21440 3852 pts/0 Ss 04:22 0:00 -bash
root 1012 0.0 0.6 61388 3072 ? Ss 04:22 0:00 /usr/sbin/sshd -D
root 1 0.1 0.5 33636 2936 ? Ss 04:21 0:00 /sbin/init
vagrant 1541 0.0 0.4 107720 2176 ? S 04:22 0:00 sshd: vagrant@pts/0
root 621 0.0 0.4 10228 2412 ? Ss 04:22 0:00 dhclient -1 -v -pf /run/dhclient.eth0.pid...
root 999 0.0 0.3 43456 1832 ? Ss 04:22 0:00 /lib/systemd/systemd-logind
root 408 0.0 0.3 49916 1744 ? Ss 04:21 0:00 /lib/systemd/systemd-udevd --daemon
このスクリプトは、ps auxの実行結果で、3カラム目はCPU使用率、4カラム目はメモリ使用率であることを利用しています。
何番目のカラムに何の情報があるか確認したいとき、列の並び順はps aux
を単独で実行すると1行目に記載されています。
ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.1 0.5 33636 2936 ? Ss 04:21 0:00 /sbin/init
root 2 0.0 0.0 0 0 ? S 04:21 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 04:21 0:00 [ksoftirqd/0]
...
こちらもおススメ