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

Linux基礎:コマンド練習21

コマンド練習21

 「コマンド練習21」では、7章の前半で登場したコマンドについて 学びます。ここで扱うのは pspstreetop です。これらのコマンドは、システム上で実行中のプロセスを監視・管理するために利用されます。システム管理者がプロセスの動作状況を把握し、必要に応じて調査やチューニングを行う際に非常に重要です。

  • ps は現在のプロセス情報を表示するコマンド
  • pstree はプロセスの親子関係をツリー形式で表示するコマンド
  • top は動的にシステムのプロセスとリソース使用状況を監視するコマンド

以下で各コマンドを詳しく解説し、実践的な練習問題と模範解答例を提示します。

コマンド解説

1.ps コマンド

 現在のプロセス情報を表示するコマンド。PID(プロセスID)、TTY、CPU使用時間、コマンド名などを確認できます。

書式

ps [オプション]

主なオプション

オプション説明
-eすべてのプロセスを表示
-fフルフォーマットで詳細表示
-u [ユーザー名]指定したユーザーのプロセスを表示
auxBSD形式で全プロセスを表示

2.pstree コマンド

 実行中のプロセスを親子関係でツリー表示します。システムのプロセス構造を視覚的に理解できます。

書式

pstree [オプション]

主なオプション

オプション説明
-pPIDを表示
-u実行ユーザーを表示
-aコマンドライン引数を表示

3.top コマンド

 システム上のプロセスをリアルタイムで監視するコマンド。CPU使用率やメモリ使用量、ロードアベレージを動的に確認可能です。

書式

top

主な操作キー

キー説明
qtopを終了
kプロセスをkill
u特定ユーザーのプロセスを表示
hヘルプを表示

練習問題 + 模範解答例

問題1

現在システムで稼働しているすべてのプロセスを確認してください。

模範解答例

[user@rocky9 ~]$ ps -ef
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 08:45 ?        00:00:01 /usr/lib/systemd/systemd rh
root           2       0  0 08:45 ?        00:00:00 [kthreadd]
root           3       2  0 08:45 ?        00:00:00 [pool_workqueue_]
root           4       2  0 08:45 ?        00:00:00 [kworker/R-rcu_g]
(省略)

問題2

ユーザー user が実行しているプロセスだけを表示してください。

模範解答例

[user@rocky9 ~]$ ps -u user
    PID TTY          TIME CMD
   2100 ?        00:00:00 systemd
   2102 ?        00:00:00 (sd-pam)
   2118 ?        00:00:00 gnome-keyring-d
   2123 tty2     00:00:00 gdm-wayland-ses
(省略)

問題3

実行中のプロセスをツリー形式で表示し、PID も一緒に確認してください。

模範解答例

[user@rocky9 ~]$ pstree -p
systemd(1)─┬─ModemManager(802)─┬─{ModemManager}(817)
           │                   ├─{ModemManager}(828)
           │                   └─{ModemManager}(830)
           ├─NetworkManager(1073)─┬─{NetworkManager}(1077)
           │                      └─{NetworkManager}(1078)
           ├─VBoxDRMClient(1055)─┬─{VBoxDRMClient}(1069)
(省略)

問題4

実行中のプロセスをツリー形式で表示し、ユーザー情報も確認してください。

模範解答例

[user@rocky9 ~]$ pstree -u
systemd─┬─ModemManager───3*[{ModemManager}]
        ├─NetworkManager───2*[{NetworkManager}]
        ├─VBoxDRMClient───5*[{VBoxDRMClient}]
        ├─VBoxService───8*[{VBoxService}]
        ├─accounts-daemon───3*[{accounts-daemon}]
        ├─alsactl
        ├─atd
        ├─auditd─┬─sedispatch
        │        └─2*[{auditd}]
        ├─avahi-daemon(avahi)───avahi-daemon
        ├─chronyd(chrony)
        ├─colord(colord)───3*[{colord}]
(省略)

問題5

システム全体の CPU 使用率とメモリ使用率をリアルタイムで確認してください。

模範解答例

[user@rocky9 ~]$ top

top - 15:44:39 up  6:59,  2 users,  load average: 0.02, 0.06, 0.02
Tasks: 217 total,   1 running, 216 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.2 us,  0.8 sy,  0.0 ni, 97.8 id,  0.0 wa,  1.0 hi,  0.2 si,  0.0 st
MiB Mem :   1771.5 total,    161.8 free,   1242.8 used,    533.8 buff/cache
MiB Swap:   2048.0 total,   2044.7 free,      3.3 used.    528.7 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND 
   2187 user      20   0 4199368 390996 136748 S   2.7  21.6   0:37.83 gnome-+ 
   2943 user      20   0  851932  67404  47244 S   0.7   3.7   0:03.78 gnome-+ 
   3454 root      20   0       0      0      0 I   0.3   0.0   0:00.28 kworke+ 
(省略)

問題6

top を使い、ユーザー user が実行しているプロセスだけを表示してください。

模範解答例

top
# 実行後に "u" を押して、tanaka と入力
top - 15:50:02 up  7:04,  2 users,  load average: 0.00, 0.01, 0.00
Tasks: 217 total,   1 running, 216 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.7 us,  1.2 sy,  0.0 ni, 96.4 id,  0.0 wa,  1.5 hi,  0.2 si,  0.0 st
MiB Mem :   1771.5 total,    161.8 free,   1242.8 used,    533.8 buff/cache
MiB Swap:   2048.0 total,   2044.7 free,      3.3 used.    528.7 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND 
   2187 user      20   0 4199368 390984 136736 S   5.7  21.6   0:40.30 gnome-+ 
   2943 user      20   0  851932  67404  47244 S   1.0   3.7   0:04.15 gnome-+ 
   3620 user      20   0  225872   4352   3584 R   0.3   0.2   0:00.31 top
(省略)

問題7

 シェルスクリプトを新規作成し、バックグラウンドで無限ループするプロセスを起動し、その後 ps で確認してください。

模範解答例

[user@rocky9 ~]$ echo -e '#!/bin/bash\nwhile true; do echo "running"; sleep 5; done' > loop.sh
[user@rocky9 ~]$ chmod +x loop.sh
[user@rocky9 ~]$ ./loop.sh &
[1] 3753
running
[user@rocky9 ~]$ running
running

[user@rocky9 ~]$ ps -ef | grep loop.sh
user        3753    3682  0 15:53 pts/0    00:00:00 /bin/bash ./loop.sh
user        3767    3682  0 15:53 pts/0    00:00:00 grep --color=auto loop.sh
[user@rocky9 ~]$ running
running
running
running
(続く)

まとめ

「コマンド練習21」では、7章の前半で登場したコマンドについて 学びました。

  • ps で現在のプロセス情報を表示
  • pstree でプロセスの親子関係を可視化
  • top でシステムリソースのリアルタイム監視

これらを活用することで、Linux のプロセス管理やシステム監視を効率的に行えるようになります。