新Linux入門|プロセスの制御とは:Linuxで学ぶ実行・停止・終了・優先度の基本

Linuxでは、すべての動作が「プロセス」という単位で管理されています。
でも、ただ動かすだけでなく、プロセスを止めたり・再開したり・終了させたりすることもできます。

この記事では、プロセスの制御の基本をわかりやすく解説していきます💪

⚙️ プロセスとは?

プロセス(Process)とは、実行中のプログラムの実体です。
たとえば、ターミナルで ls を実行すれば、その瞬間に「ls プロセス」が作られて動きます。
 OS(Linuxカーネル)は、各プロセスにCPU時間・メモリ・ファイルハンドルなどを割り当てて管理します。

項目説明
定義実行中のプログラムの実体
識別子プロセスID(PID)で一意に識別される。
管理者Linuxカーネルが生成・実行・終了を制御
実行例ls, ps, vim, sshd などすべてがプロセスとして動作

⚙️ プロセスの生成と終了の仕組み

プロセスは 生成 → 実行 → 終了 というサイクルで動作します。

フェーズ説明
生成(fork/exec)新しいプログラムが実行されるとき、親プロセスが fork() で子プロセスを作成。
実行子プロセスが exec() により指定プログラムを実行。
終了処理完了またはシグナル受信により終了し、リソースが解放される。

💬ポイント
Linuxのすべてのプロセスは、最初に起動される systemd (PID=1) を親にもつ階層構造になっています。

🧭 プロセスの制御とは?

 プロセスの制御とは、実行中のプロセスに対して 一時停止・再開・終了・優先度変更 などを行う操作のことです。
これにより、システムの安定性を保ちながら、リソースを効率よく使うことができます。

操作内容主なコマンド
一覧表示実行中のプロセスを確認する。ps, top
一時停止一時的に処理を中断する。Ctrl+Z
再開停止したプロセスを再開する。bg, fg
終了プロセスを停止・終了する。kill
優先度変更CPU利用の優先度を設定nice, renice

🔍 プロセスの一覧表示(psコマンド)

現在のプロセスを確認する基本コマンドです。

コマンド書式

ps [オプション]

主なオプション

オプション説明
-eすべてのプロセスを表示
-f詳細情報を表示
-u ユーザー名指定したユーザーのプロセスを表示

使用例

[root@AlmaLinux ~]# ps -ef
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 11月28 ?      00:00:00 /usr/lib/systemd/systemd --switched-root --system --
root           2       0  0 11月28 ?      00:00:00 [kthreadd]
root           3       2  0 11月28 ?      00:00:00 [pool_workqueue_]
root           4       2  0 11月28 ?      00:00:00 [kworker/R-rcu_g]
root           5       2  0 11月28 ?      00:00:00 [kworker/R-sync_]
(省略)

💬ポイント
 PID(プロセスID)やPPID(親プロセスID)を確認することで、どのプロセスがどの親から生まれたのか分かります。

⏸️ プロセスの停止(Ctrl + Z)

ターミナル上で動いているプロセスを一時停止するには、
Ctrl + Z を押します。

[suzuki@AlmaLinux ~]$ top

top - 02:01:41 up  2:14,  2 users,  load average: 0.00, 0.00, 0.00
Tasks: 220 total,   1 running, 218 sleeping,   0 stopped,   1 zombie
%Cpu(s):  0.7 us,  1.4 sy,  0.0 ni, 96.8 id,  0.0 wa,  1.2 hi,  0.0 si,  0.0 st
MiB Mem :   1707.2 total,    192.5 free,    983.0 used,    714.1 buff/cache
MiB Swap:   2048.0 total,   2045.0 free,      3.0 used.    724.2 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                          
   4982 suzuki    20   0 4090884 316764 142160 S   6.3  18.1   0:09.14 gnome-shell                      
   6373 suzuki    20   0  853572  62384  48252 S   1.3   3.6   0:01.32 gnome-terminal

(省略)

(ここで Ctrl + Z を押す)
[1]+  Stopped                 top

💬ポイント
これでプロセスが一時停止(Stopped)状態になります。
停止したジョブは jobs コマンドで確認できます。

▶️ プロセスの再開(bg / fg)

停止したプロセスは、次のコマンドで再開できます。

コマンド説明
fg %1ジョブ番号1をフォアグラウンドで再開fg %1
bg %1ジョブ番号1をバックグラウンドで再開bg %1

💬ポイント
fg は画面上で操作を再開、bg は裏で動かしながら他の作業を続けられます。

❌ プロセスの終了(killコマンド)

プロセスを終了させたいときは、kill コマンドでシグナルを送ります。

コマンド書式

kill [オプション] PID

主なオプション

オプション説明
-l利用可能なシグナル一覧を表示
-9強制終了(SIGKILL)
-15通常終了(SIGTERM:デフォルト)

使用例

[suzuki@AlmaLinux ~]$ kill -9 2189

💬ポイント
PID 2189 のプロセスを強制終了します。
安全に終了させたい場合は kill -15 を使いましょう。

⚖️ プロセスの優先度とスケジューリング(nice / renice)

Linuxでは、プロセスごとに優先度(Priority)が設定されており、
CPU時間の割り当てを調整することができます。

優先度は nice値(-20~19) で表され、数値が小さいほど優先的に実行されます。
(通常ユーザーは +値しか設定できず、負の値はroot権限が必要です)

コマンド説明
nice新しいプロセスを指定した優先度で起動
renice実行中のプロセスの優先度を変更

使用例

新しいプロセスを優先度 +10 で起動

[suzuki@AlmaLinux ~]$ nice -n 10 tar czf backup.tar.gz /home/suzuki

実行中プロセスの優先度を変更

[root@AlmaLinux ~]# renice -n -5 2170
2170 (process ID) old priority 0, new priority -5

💬ポイント
システム負荷が高いとき、低優先度で実行すべきタスクを nice で設定すると便利です。

🌈 まとめ

  • プロセスの制御とは、実行・停止・再開・終了・優先度変更などを通して、
    システムの安定と効率を保つための基本操作。
  • ps, kill, bg, fg, nice, renice などを使いこなすことで、
    サーバーの負荷管理やトラブル対応がスムーズになります。
  • 正しくプロセスを扱うことで、AlmaLinux 9.6 の運用がより安全で快適になります✨

次回は、シグナルの種類とプロセス間通信(IPC) の仕組みについて詳しく見ていきましょう!