このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

新Linuxコマンド演習51

新Linuxコマンド演習51 概要

 「新Linuxコマンド演習51」では、Linuxシステムで実行されているプロセスを管理するための基本コマンドを学びます。
 プロセスとは、実行中のプログラムの実体であり、すべてのプロセスには固有の識別番号 PID(Process ID) が割り当てられます。

 また、プロセスには「親プロセス(Parent Process)」と「子プロセス(Child Process)」の階層構造が存在し、pstree コマンドでこの親子関係を可視化できます。
さらに、top コマンドを用いてリアルタイムにCPUやメモリの使用状況を監視することもできます。

プロセス関連コマンドの一覧

コマンド主な目的主なオプション説明
ps実行中のプロセス情報を表示-l, -efプロセスIDや親プロセスIDを確認可能
pstreeプロセスの親子関係をツリー形式で表示-p, -uPID付きやユーザー付きでツリー表示
topプロセスの実行状態やリソース使用率をリアルタイム表示-p指定したプロセスのみ監視可能

表の説明
ps は現在動作中のプロセスを静的に一覧表示するコマンドです。
 pstree はプロセスの階層構造(親子関係)を視覚的に表示し、システム内部の動作を理解するのに役立ちます。
top はリアルタイムモニタリングツールで、CPU・メモリの負荷状況を動的に確認できます。

演習問題+模範解答例

演習01:プロセスの詳細情報を表示する

問題
現在の端末で動作しているプロセスをロングフォーマットで表示し、詳細情報を確認してください。

模範解答例

[suzuki@AlmaLinux ~]$ ps -l
F S   UID     PID    PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 S  1000    6405    6373  0  80   0 - 56034 do_wai pts/0    00:00:00 bash
0 R  1000    7110    6405  0  80   0 - 56346 -      pts/0    00:00:00 ps

解説
ps -l はロングフォーマットでプロセス情報を表示します。
主な列の意味は以下の通りです。

項目説明
PIDプロセスID(各プロセスを識別する番号)
PPID親プロセスID
UID実行ユーザーのID
CMD実行しているコマンド名
Sプロセスの状態(S:スリープ、R:実行中)

これにより、現在のターミナルで動作中のプロセスを特定できます。

演習02:プロセスツリーを表示する

問題
システム上のすべてのプロセスを、親子関係を含めてツリー形式で表示してください。

模範解答例

[suzuki@AlmaLinux ~]$ pstree
systemd─┬─ModemManager───3*[{ModemManager}]
        ├─NetworkManager───2*[{NetworkManager}]
        ├─VBoxDRMClient───5*[{VBoxDRMClient}]
        ├─VBoxService───8*[{VBoxService}]
        ├─accounts-daemon───3*[{accounts-daemon}]
        ├─alsactl
        ├─atd
        └─(他のプロセス省略)

解説
pstree はプロセスの親子関係をツリー形式で表示します。
systemd は最初に起動されるプロセス(PID 1)で、すべてのプロセスの親です。
このツリー表示で、どのプロセスがどの親プロセスから生成されたかを理解できます。

演習03:プロセスツリーにPIDを含めて表示する

問題
pstree コマンドでプロセスID(PID)を含めてツリー形式で表示してください。

模範解答例

[suzuki@AlmaLinux ~]$ pstree -p
systemd(1)─┬─ModemManager(800)─┬─{ModemManager}(826)
           │                   ├─{ModemManager}(834)
           │                   └─{ModemManager}(837)
           ├─NetworkManager(1112)─┬─{NetworkManager}(1113)
           │                      └─{NetworkManager}(1114)
           ├─VBoxDRMClient(1049)─┬─{VBoxDRMClient}(1060)
           │                     ├─{VBoxDRMClient}(1061)
           │                     ├─{VBoxDRMClient}(1065)
           │                     ├─{VBoxDRMClient}(1066)
           │                     └─{VBoxDRMClient}(6333)
           └─(他のプロセス省略)

解説
-p オプションを付けることで、各プロセスのPIDを表示できます。
これにより、プロセスの構造とPIDの対応関係を一目で確認できます。

演習04:リアルタイムでプロセスとリソースを監視する

問題
CPU・メモリの使用状況を含めて、実行中のプロセスをリアルタイムで監視してください。

模範解答例

[suzuki@AlmaLinux ~]$ top

(実行結果例)

top - 14:46:32 up 14:59,  2 users,  load average: 0.00, 0.00, 0.00
Tasks: 219 total,   1 running, 217 sleeping,   0 stopped,   1 zombie
%Cpu(s):  0.2 us,  0.0 sy,  0.0 ni, 99.5 id,  0.0 wa,  0.3 hi,  0.0 si,  0.0 st
MiB Mem :   1707.2 total,    216.8 free,    997.4 used,    682.3 buff/cache
MiB Swap:   2048.0 total,   2047.7 free,      0.3 used.    709.7 avail Mem 

   4982 suzuki    20   0 4089340 322824 142100 S   1.0  18.5   0:22.76 gnome-shell                      
   6373 suzuki    20   0  853704  62644  48320 S   0.7   3.6   0:02.86 gnome-terminal-                  
   7145 suzuki    20   0  225908   4432   3588 R   0.3   0.3   0:00.01 top                              
      1 root      20   0  174768  17228  11136 S   0.0   1.0   0:01.02 systemd  
(省略)

解説
top はシステム全体の負荷状況をリアルタイムで表示します。
主な指標の意味は以下の通りです。

項目説明
PIDプロセスID
%CPU各プロセスのCPU使用率
%MEM各プロセスのメモリ使用率
COMMAND実行しているコマンド名
load averageCPU負荷の平均値(1分/5分/15分)

q キーで終了できます。

演習05:特定のプロセスのみを監視する

問題
top コマンドを使って、PID 4982 のプロセスのみを監視してください。

模範解答例

[suzuki@AlmaLinux ~]$ top -p 4982

(出力例)

top - 14:56:28 up 15:09,  2 users,  load average: 0.08, 0.02, 0.01
Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.2 us,  0.7 sy,  0.0 ni, 98.5 id,  0.0 wa,  0.7 hi,  0.0 si,  0.0 st
MiB Mem :   1707.2 total,    215.1 free,    998.8 used,    682.6 buff/cache
MiB Swap:   2048.0 total,   2047.7 free,      0.3 used.    708.4 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                          
   4982 suzuki    20   0 4159796 323184 142272 S   1.7  18.5   0:26.02 gnome-shell   

解説
top -p <PID> で特定のプロセスのみを監視できます。
GUIアプリやバックグラウンドプロセスの動作確認などに便利です。

まとめ

新Linuxコマンド演習51」では、以下の3つの重要なスキルを学びました。

  1. ps コマンドでプロセスの状態を確認する。
  2. pstree コマンドで親子関係を理解する。
  3. top コマンドでCPU・メモリ使用状況をリアルタイム監視する。

 これらを組み合わせて活用することで、Linuxシステムの動作解析・トラブルシューティングを効率的に行うことができます。