[Linux] 処理状況の確認コマンド

メソ
2025-04-18
2025-04-18

近頃アラート対応を行う機会が増えてきました。アラート対応では日々の運用と比べ、適切な判断と素早い対応が必要となることを実感します。
アラートの内容にもよりますが、サーバ内の処理状況を確認する際はCPUやメモリ、ディスク等の各種利用状況を確認し、暫時的な対応や原因の追及を行います。今回はその際に利用するコマンドをまとめていきます。

実行環境

OS:AlmaLinux 9.5

ログオン状況の確認

複数人が接続できるサーバの場合、誰が接続しているのかを確認することがあります。もし他の人が接続しており作業中の場合、自分の操作は止めておこうなどの判断ができます。

wコマンド(procps-ng 3.3.17)でログオンユーザ名、接続元、処理内容などが表示されます。

[root@example.com ~]# w
 16:03:47 up 60 days, 23:25,  1 user,  load average: 0.00, 0.00, 0.00
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
user     pts/0     16:03    0.00s  0.00s  0.02s sshd: user [priv]
USER ログオンユーザ
TTY 端末名
FROM 接続元
LOGIN@ ログイン時間
IDLE アイドル時間
JCPU 端末すべてのプロセス使用時間
PCPU  実行プロセスの使用時間
WHAT 実行コマンド

ディスク容量の確認

ディスク使用率が高まっている場合、どの領域がよく使用されているかを探します。容量が大きい領域やあまり使用されてない領域については、別領域への退避や削除、容量追加等の対応を行います。

パーティションごとの容量確認

dfコマンド(GNU coreutils 8.32)ではパーティションごとに割り当てられている容量、ディスク使用率などを確認します。

[root@example.com ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs                     4.0M     0  4.0M    0% /dev
tmpfs                         16G     0   16G    0% /dev/shm
Filesystem パーティション名
Size 割り当て容量
Used 使用容量
Avail 残り容量
Use% 使用率
Mounted on マウント
ディレクトリごとの容量確認

duコマンド(GNU coreutils 8.32)で指定のディレクトリの使用量を確認します。
例えば、ログディレクトリの中でどこが容量を使用しているかを確認する場合、以下のようにパスを指定します。

[root@example.com ~]# du -h /var/log
73M     /var/log/httpd
24M     /var/log/mail
:
:

メモリ/CPUの確認

メモリやCPUの使用率はおおよそ監視ツールなどで通知されるかと思いますが、詳細はコマンドで確認します。

メモリの使用率

freeコマンド(procps-ng 3.3.17)ではメモリの全体使用状況を確認します。-hオプションで単位をよしなに調整してくれます。

[root@example.com ~]# free -h
               total        used        free      shared  buff/cache   available
Mem:            30Gi       1.6Gi        27Gi       652Mi       3.2Gi        29Gi
total 全体の容量
used 使用中メモリ容量
free 未割当ての容量
shared 共有メモリ容量
buffers ファイルバッファ
cached キャッシュ
CPU/メモリの使用状況

topコマンド(procps-ng 3.3.17)では、どのプロセスがよく使用しているのかリアルタイムで確認します。topコマンドを実行後、Mを入力するとメモリの使用率順、Cを入力するとCPUの使用率順にプロセスが表示されます。

[root@example.com ~]# top
PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
48996 root      20   0 2638412  86268  55808 S   0.0   0.3   4:53.76 dockerd
715 root      20   0  109736  85032  84008 S   0.0   0.3   1:33.73 systemd-journal
:
:
PID プロセスID
USER プロセスを所有しているユーザ
PR 優先度
NI 相対優先度
VIRT 仮想メモリ
RES 物理メモリ
SHR 共有メモリ
S プロセスの状態
%CPU CPU使用率
%MEM メモリ使用率
VSZ メモリ使用サイズ(仮想メモリを含む)
RSS メモリ使用サイズ(仮想メモリを除く)
COMMAND 実行コマンド

プロセス使用状況の確認

プロセスを確認する際、psコマンドで処理状況を確認します。サーバを圧迫しているプロセスがある場合、停止等の対応を行います。

今回はpsコマンド(procps-ng 3.3.17)にオプションauxfを追加して、でプロセスの詳細表示と子プロセスを一緒に表示してみます。

[root@example.com ~]# ps auxf
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         2  0.0  0.0      0     0 ?        S     2015   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S     2015  10:06  \_ [migration/0]
root         4  0.0  0.0      0     0 ?        S     2015  10:05  \_ [ksoftirqd/0]
:
:
USER プロセスを所有しているユーザ
PID プロセスID
%CPU CPU使用率
%MEM メモリ使用率
VSZ メモリ使用サイズ(仮想メモリを含む)
RSS メモリ使用サイズ(仮想メモリを除く)
TTY プロセスを制御している端末名
STAT プロセスの状態
START プロセス開始時刻
TIME プロセス稼働時間
COMMAND 実行コマンド

まとめ

アラートや障害対応ではどこで何が起きているか把握するため、把握したい項目に応じたコマンドやオプションを活用する必要があります。
これまで列挙してきたコマンドは一部となりますが、実務でも活用できるようにしていきたいと思います。