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

Linux基礎:プロセスを管理するコマンド

プロセスを管理するコマンド

 Linux システムでは、動作中のプログラムはすべて「プロセス」として管理されます。プロセスには固有の プロセス ID(PID) が割り当てられ、PID を用いることで個々のプロセスを識別し、監視や制御を行うことができます。システム管理者は、実行中のプロセスを把握し、リソースの使用状況を確認したり、不要なプロセスを終了させたりすることで、システムを安定して運用できます。

 ここでは、プロセスを管理するための代表的なコマンドとして ps, pstree, top, kill, killall を紹介し、それぞれの使い方や出力例を Rocky Linux の環境で解説します。

1.プロセスの基本

1.1. プロセスとは

 プログラムはストレージに保存されていますが、実行するとメモリに読み込まれて CPU によって処理されます。この動作中の状態を「プロセス」と呼びます。
 すべてのプロセスは親プロセスから生成され(フォーク)、そこからさらに子プロセスを生み出します。この親子関係を理解することは、システム動作の把握に役立ちます。

1.2. プロセス ID (PID)

 プロセスごとに一意の番号(PID)が割り当てられます。PID は、プロセスの状態を調べたり終了させる際に利用されます。複数の同名プログラムが同時に動作していても、PID によって区別が可能です。


2.プロセス情報を表示するコマンド

2.1. ps コマンド

書式

ps [オプション]

役割

現在実行中のプロセスの情報を一覧表示します。

主なオプション

オプション説明
aすべてのユーザーのプロセスを表示
uユーザー名や詳細情報を表示
x端末に関連付けられていないプロセスも表示

使用例

[user@rocky9 ~]$ ps
    PID TTY          TIME CMD
   2972 pts/0    00:00:00 bash
   4154 pts/0    00:00:00 ps

すべてのプロセスを表示する場合

[user@rocky9 ~]$ ps aux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.9 173988 16680 ?        Ss    9月12   0:01 /usr/lib/s
root           2  0.0  0.0      0     0 ?        S     9月12   0:00 [kthreadd]
root           3  0.0  0.0      0     0 ?        S     9月12   0:00 [pool_work
root           4  0.0  0.0      0     0 ?        I<    9月12   0:00 [kworker/R
(省略)

2.2. pstree コマンド

書式

pstree [オプション]

役割

プロセスの親子関係をツリー形式で表示します。

使用例

[user@rocky9 ~]$ pstree
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-daem
(省略)

ここから systemd が親となり、多数のサービスを生成していることが分かります。

2.3. top コマンド

書式

top

役割

リアルタイムで CPU やメモリの使用状況を監視します。

主な表示項目

項目説明
PIDプロセス ID
USER実行ユーザー
%CPUCPU 使用率
%MEMメモリ使用率
COMMAND実行中のコマンド

使用例

[ user@rocky9 ~ ]$ top

top - 14:51:08 up 19:54,  2 users,  load average: 0.00, 0.00, 0.00
Tasks: 219 total,   3 running, 216 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.2 us,  0.5 sy,  0.0 ni, 98.7 id,  0.0 wa,  0.5 hi,  0.2 si,  0.0 st
MiB Mem :   1771.5 total,    110.0 free,   1391.8 used,    452.6 buff/cache
MiB Swap:   2048.0 total,   1960.4 free,     87.6 used.    379.7 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND 
   2275 user      20   0 4213492 325468  67260 R   1.7  17.9   1:13.25 gnome-+ 
   2935 user      20   0  855228  53412  35796 S   0.7   2.9   0:05.44 gnome-+ 
   3910 root      20   0       0      0      0 I   0.3   0.0   0:00.65 kworke+ 
      1 root      20   0  173988  16680  10832 S   0.0   0.9   0:01.47 systemd 
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.06 kthrea+ 
      3 root      20   0       0      0      0 S   0.0   0.0   0:00.00 pool_w+ 
(省略)

終了するには q を押します。

3.プロセスを制御するコマンド

3.1. kill コマンド

書式

kill -[シグナル] PID
kill -s [シグナル名] PID

役割

 指定したプロセスにシグナルを送ります。デフォルトは TERM(15) シグナルで終了を指示します。

主なシグナル

シグナルIDシグナル名動作
15TERM通常終了(デフォルト)
9KILL強制終了
19STOP一時停止
18CONT再開

使用例

[user@rocky9 ~]$ gedit & # バックグラウンドで実行
[1] 6619
[user@rocky9 ~]$ kill -15 6619
[1]+  Terminated              gedit

3.2. killall コマンド

書式

killall [オプション] プロセス名

役割

 プロセス名を指定して終了させます。同名のプロセスが複数ある場合はすべて終了する点に注意が必要です。

使用例

[user@rocky9 ~]$ gedit & # バックグラウンドで実行
[1] 7088
[user@rocky9 ~]$ killall -9 gedit
[1]+  強制終了            gedit

まとめ

  • プロセスは実行中のプログラムであり、固有の PID を持つ。
  • ps でプロセス一覧を表示し、pstree で親子関係を確認できる。
  • top でリアルタイムの監視が可能。
  • 不要なプロセスは killkillall で終了できる。
  • シグナルを使い分けることで、通常終了・一時停止・強制終了などの制御が可能。

 プロセス管理は Linux 管理の基礎であり、トラブルシューティングやシステムの安定稼働に直結する重要なスキルです。