LoginSignup
2
1

topコマンドのバッチモード

Posted at

topコマンドのバッチモード

はじめに

topコマンドは、LinuxやMac等ほとんどのUNIX系OSに用意されているコマンドの一つです。topを起動すると、1秒、あるいは数秒間隔でプロセスや負荷の状況を表示して、システムの状態の変化を確認するために使われます。知ってる人は知ってる話ですが、topにはバッチモードが用意されています。ということでtopのバッチモードの紹介です。

FreeBSDのtopとバッチモード

topコマンドは、負荷の高いプロセスを調べられるだけでなく、ps、uptime、swapinfo、vmstat等で個別に調べる内容をまとめて見ることができる点が便利です。さらにZFSを使っていればARCのメモリの使用状況まで確認できます。

topのオプションに-bを指定するとバッチモードとなり、通常のtopの1回分を表示して終了します。システムの負荷の状態のサマリを1コマンドで得られるのはかなり便利ではないでしょうか。

$ top -b
last pid: 46319;  load averages:  0.26,  0.16,  0.12  up 12+18:17:21    07:34:08
41 processes:  3 running, 38 sleeping
CPU:  0.1% user,  0.0% nice,  1.6% system,  0.0% interrupt, 98.3% idle
Mem: 1439M Active, 751M Inact, 3855M Wired, 40K Buf, 1819M Free
ARC: 3201M Total, 584M MFU, 2368M MRU, 896K Anon, 161M Header, 64M Other
     2825M Compressed, 4857M Uncompressed, 1.72:1 Ratio
Swap: 8192M Total, 8192M Free

  PID USERNAME    THR PRI NICE   SIZE    RES STATE    C   TIME    WCPU COMMAND
 1432 root         13  20    0  2135M  1677M CPU3     3  17.7H   4.10% bhyve
 1190 nobody        1  20    0    18M  7616K CPU3     3  25:52   0.00% openvpn
 1205 root          1  20    0    13M  2304K select   2   6:46   0.00% powerd
35433 bind         10  52    0    85M    36M sigwai   3   3:27   0.00% named
 1231 ntpd          2  20    0    21M  7128K select   2   2:15   0.00% ntpd
 1272 root          1  20    0    18M  7436K select   1   0:18   0.00% sendmail
  850 root          1  20    0    13M  2504K select   0   0:16   0.00% routed
 1253 root          1  20    0    13M  2584K nanslp   3   0:07   0.00% cron
 1450 minmin        1  20    0    21M  9560K select   2   0:05   0.00% ssh
 1022 root          1  20    0    13M  2836K select   3   0:04   0.00% syslogd
 2386 minmin        1  20    0    21M    10M select   2   0:02   0.00% sshd
  888 root          4  52    0    12M  2228K rpcsvc   0   0:02   0.00% nfscbd
 1198 _dhcp         1  20    0    16M  5988K select   3   0:02   0.00% dhcpd
26924 root          1  20    0    18M  8108K select   1   0:02   0.00% ssh
26911 root          1  20    0    18M  8088K select   1   0:02   0.00% ssh
 1330 minmin        1  20    0    18M  7356K select   1   0:01   0.00% ssh-agent
  862 root          1  20    0    13M  2348K select   3   0:01   0.00% nfsuserd
  864 root          1  20    0    13M  2348K select   2   0:01   0.00% nfsuserd

$

デフォルトで表示するプロセスの数は上位20個となっていますが、数値(top -b 100等)を指定すれば変更できます。もちろん他のtopのオプションも使えます。

ちなみに、Linuxのtopコマンドも-bでバッチモードになりますが、FreeBSDのtopとは挙動が違うので興味ある方はお試しください。macOSのtopにはバッチモードは用意されていないようです。

cronでのtopの利用

個人的にはtopのバッチモードはcronを使ってシステムの状況を定期的に記録するような場合に真価を発揮すると思ってます。筆者は10分(あるいはもっと短かい間隔)でtop -bの実行結果を記録し夜間のサーバーの負荷の状況を調べることがあります。

普通にtopを起動した場合はインタラクティブモードと言いますが、インタラクティブモードでは表示できるプロセス数は画面サイズで制限を受けるところを、バッチモードであればそのような制限はありません。cronで定期的にtopの結果を記録する場合には、1000なり2000なり十分大きい数を指定すれば全プロセスを記録できます。

crontab の例

*/10 * * * * top -b 2000 > /var/log/top/$(date +\%Y\%m\%d\%H\%M).top

おわりに

連続してプロセスの変化を観測するなら普通にtopを起動すればいいわけけですが、プロセスの状況を調べ続けるのはかなりの負荷をシステムに与え続けることになります。その点でサマリーを確認するだけであれば、バッチモードはとても便利と言えます。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1