Linuxの稼働状況を調査するときに使用する基本的なコマンドを掲載します。
記事の目次
CPU使用率の高いプロセスを確認する!(top)
topコマンドを使用するとCPU使用率の高い順にプロセスの一覧を表示することができます。CPU使用率の高いプロセスの存在確認をするのに便利です。CPU全体の使用率やメモリの使用率も表示されるので、稼働状況の概要を知るのにまず使用したいコマンドです。
$ top top - 22:08:35 up 49 min, 1 user, load average: 0.71, 1.07, 0.62 Tasks: 230 total, 1 running, 229 sleeping, 0 stopped, 0 zombie %Cpu(s): 2.9 us, 5.7 sy, 0.0 ni, 91.4 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st MiB Mem : 1770.9 total, 421.9 free, 997.6 used, 545.6 buff/cache MiB Swap: 2048.0 total, 951.5 free, 1096.5 used. 773.3 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 8915 usradmin 20 0 226056 3924 3300 R 11.8 0.2 0:00.03 top 1 root 20 0 173068 8944 4100 S 0.0 0.5 0:04.48 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp ...
CPU全体の使用率とメモリ使用状況を確認する!(vmstat)
vmstatコマンドを使用するとCPU全体の使用率とメモリ使用率を確認できます。ページングの状況が確認できるので、スラッシングによるパフォーマンスダウンが発生していないか確認することができます。
$ vmstat -t 1 5 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- -----timestamp----- r b swpd free buff cache si so bi bo in cs us sy id wa st JST 0 0 1121520 407384 16 603988 21 204 1783 338 449 750 3 2 93 2 0 2023-01-10 22:13:38 1 0 1121520 407384 16 604028 0 0 0 0 200 271 0 0 100 0 0 2023-01-10 22:13:39 0 0 1121520 407384 16 604028 0 0 0 0 256 256 0 1 99 0 0 2023-01-10 22:13:40 0 0 1121520 403128 16 604028 8 0 8 8 379 503 1 1 98 0 0 2023-01-10 22:13:41 0 0 1121520 403128 16 604028 0 0 0 0 437 455 1 1 98 0 0 2023-01-10 22:13:42
※「-t」オプションを指定すると、計測した時刻を表示することができます。
コア単位のCPU使用率を確認する!(sar)
コア単位のCPU使用率をsarコマンドで確認します。sarコマンドを使用するためには、sysstatパッケージをインストールする必要があります。複数コアを使用している場合は、vmastatのみでなくsarコマンドも使用したほうがよいです。例えば、2コアでCPU使用率が50%の場合は、1つのコアの使用率が100%になっいて、システム全体のパフォーマンスダウンにつながっている場合があります。
# sar -P ALL 1 3 Linux 5.14.0-162.6.1.el9_1.0.1.x86_64 (vmsans01) 01/10/2023 _x86_64_ (2 CPU) 10:29:39 PM CPU %user %nice %system %iowait %steal %idle 10:29:41 PM all 0.00 0.00 0.00 0.00 0.00 100.00 10:29:41 PM 0 0.00 0.00 0.00 0.00 0.00 100.00 10:29:41 PM 1 0.00 0.00 0.00 0.00 0.00 100.00 10:29:41 PM CPU %user %nice %system %iowait %steal %idle 10:29:42 PM all 0.51 0.00 1.52 0.00 0.00 97.98 10:29:42 PM 0 1.00 0.00 2.00 0.00 0.00 97.00 10:29:42 PM 1 0.00 0.00 1.02 0.00 0.00 98.98 10:29:42 PM CPU %user %nice %system %iowait %steal %idle 10:29:43 PM all 0.00 0.00 0.00 0.00 0.00 100.00 10:29:43 PM 0 0.00 0.00 0.00 0.00 0.00 100.00 10:29:43 PM 1 0.00 0.00 0.00 0.00 0.00 100.00 Average: CPU %user %nice %system %iowait %steal %idle Average: all 0.17 0.00 0.50 0.00 0.00 99.33 Average: 0 0.34 0.00 0.67 0.00 0.00 98.99 Average: 1 0.00 0.00 0.34 0.00 0.00 99.66
メモリ使用率を確認する!(free)
メモリ使用率をわかりやすく確認したいときは、freeコマンドが便利です。実メモリの空き容量は、「available」で確認できます。Swapの使用率もわかりやすく表示できます。
$ free -m total used free shared buff/cache available Mem: 1770 988 386 11 590 782 Swap: 2047 1094 953
ディスク使用率を確認する!(df)
デイスク使用率はdfコマンドで確認します。問題発生時には、まず使用率が100%になっているファイルシステムがないか調べたいところです。
$ df -m Filesystem 1M-blocks Used Available Use% Mounted on devtmpfs 4 0 4 0% /dev tmpfs 886 1 886 1% /dev/shm tmpfs 355 6 349 2% /run /dev/mapper/rl_vmsans03-root 17394 9794 7601 57% / /dev/sda1 1014 469 546 47% /boot tmpfs 178 1 178 1% /run/user/42 tmpfs 178 1 178 1% /run/user/1000
I/Oの発生状況を確認する!(iostat)
I/Oの発生状況を調査したい場合は、iostatコマンドを使用します。iostatコマンドでもCPU使用率を確認できます。CPU使用率と合わせて、iostatコマンドでI/Oの発生状況を確認できます。
$ iostat -t 1 3 Linux 5.14.0-162.6.1.el9_1.0.1.x86_64 (vmsans01) 01/10/2023 _x86_64_ (2 CPU) 01/10/2023 10:20:53 PM avg-cpu: %user %nice %system %iowait %steal %idle 2.27 0.01 1.73 2.02 0.00 93.96 Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd dm-0 204.69 2835.52 225.57 0.00 10439942 830514 0 dm-1 101.00 61.84 343.34 0.00 227670 1264116 0 sda 211.04 3025.62 569.53 0.00 11139876 2096917 0 sr0 0.02 0.17 0.00 0.00 630 0 0 ...
※「-t」オプションを指定すると、計測した時刻を表示することができます。
ネットワークの接続状況を確認する!(ss)
ssコマンドでネットワーク接続状況を確認します。root権限で使用するとポートを使用するプロセスの情報を表示することもできます。
# ss -4anp Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process udp UNCONN 0 0 0.0.0.0:44833 0.0.0.0:* users:(("avahi-daemon",pid=749,fd=14)) udp UNCONN 0 0 0.0.0.0:5353 0.0.0.0:* users:(("avahi-daemon",pid=749,fd=12)) udp UNCONN 0 0 127.0.0.1:323 0.0.0.0:* users:(("chronyd",pid=797,fd=5)) tcp LISTEN 0 4096 0.0.0.0:80 0.0.0.0:* users:(("docker-proxy",pid=1696,fd=4)) tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=821,fd=3)) tcp LISTEN 0 128 127.0.0.1:631 0.0.0.0:* users:(("cupsd",pid=820,fd=7)) tcp ESTAB 0 0 10.1.21.21:22 10.1.1.1:39142 users:(("sshd",pid=3545,fd=4),("sshd",pid=3515,fd=4))
おわりに
システムのリソース使用状況を知りたい場合に、まず使用したいコマンドをリストアップしました。問題発生時には、まず本稿のコマンドで原因を絞り込んでいきましょう。
関連記事
関連書籍(Amazon)