プロセス管理とは?初心者でもわかるLinuxプロセス管理の基礎

Linuxのプロセス管理は、システム運用の基本中の基本です。LinuC-1(旧LPIC-1)でも頻出のトピックであり、コマンドの意味と使い方をしっかり理解しておくことが重要です。

この記事では、Linuxにおけるプロセスとは何か、どのように管理するのか、代表的なコマンドやオプションを交えてわかりやすく解説します。


目次

■ そもそも「プロセス」とは?

プロセスとは、実行中のプログラムのことです。

プロセスには一意のPID(プロセスID)が割り当てられます。これにより、個別に監視・操作が可能です。

例えば、tailコマンドを実行した瞬間に、システム上でtailのプロセスが作られ、完了すると終了します。


■ よく使うプロセス管理コマンド一覧

コマンド用途
ps現在のプロセスを表示
topリアルタイムでプロセスを監視
kill指定したプロセスを終了
nice / reniceプロセスの優先度(実行順)を調整
jobsバックグラウンドジョブの確認
fg / bgジョブをフォアグラウンド/バックグラウンドで実行

■ psコマンド:プロセスを確認

ps

主なオプション

  • a: すべてのユーザーのプロセスを表示
  • u: 各プロセスの実行ユーザーやCPU、メモリ等の各種情報も表示
  • x: 制御端末のないプロセスも含める(デーモン等)

出力例


■ topコマンド:プロセスをリアルタイム監視

top

CPUやメモリの使用率が高いプロセスをリアルタイムに確認できます。qで終了します。

🕒 uptime:システムの稼働時間を確認

✔ 概要

uptime は、システムが最後に起動されてからの稼働時間や、**現在の時刻、ログインユーザー数、ロードアベレージ(CPUの負荷状況)**をまとめて表示するコマンドです。

✔ 使用例

uptime

✔ 出力例

17:10:43 up 3 days,  4:18,  2 users,  load average: 0.12, 0.24, 0.31

✔ 解説

  • 17:10:43:現在の時刻
  • up 3 days, 4:18:システムが 3日と4時間18分 稼働中
  • 2 users:現在ログイン中のユーザー数
  • load average:1分、5分、15分間の平均CPU負荷(値がCPU数を超えると重くなる)

🌳 pstree:プロセスの階層構造をツリーで表示

✔ 概要

pstree は、現在のプロセスを親子関係でツリー形式に表示するコマンドです。ps コマンドと違い、どのプロセスがどのプロセスから派生したのかが一目でわかるのが特徴です。

✔ 使用例

pstree

→ 現在のプロセスがツリー表示されます。

pstree -p

→ プロセスID(PID)も表示します。

pstree <ユーザー名>

→ 指定ユーザーのプロセスだけを表示。

✔ 出力例(簡略化)

systemd─┬─sshd───bash───vim
└─cron───sh───script.sh

このように、親プロセス(例:systemd)から派生しているプロセス(bashやcronなど)がツリー構造で表示されます。

🔍 pgrep:プロセスを名前で検索してPIDを取得するコマンド

✔ 概要

pgrep は、実行中のプロセスの中から名前に一致するもののプロセスID(PID)を表示するコマンドです。

ps + grep のような使い方を、もっとシンプルに行えるツールです。


✔ 基本構文

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



✔ 使用例

① プロセス名からPIDを取得

pgrep ssh

ssh という名前を含むプロセスのPIDを表示。

② 完全一致(-x

pgrep -x sshd

sshd という名前に完全一致するプロセスのみ表示。

③ 複数一致する場合の確認

pgrep bash

→ 複数の bash セッションがあれば、すべてのPIDが表示される。

④ 実行ユーザーを指定(-u

pgrep -u root sshd

root ユーザーが実行している sshd のPIDを表示。


ps aux | grep との違い

コマンド出力内容メリット
`ps auxgrep ssh`プロセスの詳細
pgrep sshPID のみシンプル・スクリプト向き

■ killコマンド:プロセスの強制終了

kill 1234

1234はプロセスID(PID)です。

kill コマンド例

下記のようなコマンド(tail -f file1.txt)を実行しています。
今回はこのコマンドを終了させたいので、killコマンドを実行していきます。

まずは、プロセスを確認します。

終了させたい「tail -f file1.txt」のプロセスID(PID)は”2818“だと分かります。

次に、killコマンドを実行します。

すると、無事にプロセスが終了しました。

(psコマンドでも終了していることが分かります。↓)

より強力に終了させたい場合

kill -9 1234

-9はSIGKILLというシグナルで、強制終了を意味します。

📚 主なシグナル一覧(抜粋)※試験にも出ます

シグナル略号説明
1HUP再起動や再読み込みに使用
9KILL強制終了(無条件)
15TERM通常終了(デフォルト)
18CONT停止しているプロセスの再開
19STOP一時停止(一時的な停止)

pkillkillall

pkillkillall は、プロセス名から直接プロセスを終了できるコマンドです。killPID(プロセスID) を指定して終了させるのに対し、pkillkillall名前指定でまとめて終了できる 便利なツールです。

pkill(プロセス名による終了)

● 基本構文:

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

● 例:

pkill firefox

→ 名前に「firefox」を含むプロセスを終了します(最初に見つけたものから順に)。

● 主なオプション:

オプション説明
-fコマンドライン全体(引数含む)を対象に検索
-u username指定ユーザーのプロセスだけを終了
-SIGKILL強制終了シグナルを送る(例:pkill -9 firefox

🧨 killall(プロセス名を指定して一括終了)

● 基本構文:

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

● 例:

killall firefox

→ プロセス名が完全一致する「firefox」をすべて終了します。

● 主なオプション:

オプション説明
-i確認プロンプト付き(interactively)
-v実行結果を表示(verbose)
-u username指定ユーザーのプロセスに対して実行

🔍 違いの比較表

機能killpkillkillall
指定方法PIDプロセス名/属性正確なプロセス名
シグナル送信
柔軟な指定×〇(正規表現OK)△(完全一致)
複数プロセスへの対応×

■ nice / renice:プロセスの優先度を設定

niceとは?

プロセスの実行優先度を設定できます。値が小さいほど優先度が高いです(範囲は-20〜19)。

  • 「ナイス値(nice value)」を指定してプロセスを実行します。
  • ナイス値が小さいほど優先度が高くなり、大きいほど優先度が低くなります。
  • 通常は 0〜19 の範囲で指定(マイナスはスーパーユーザー限定)。

🔧 基本構文

nice -n <ナイス値> <コマンド>

📌 使用例

1. 優先度を下げてコマンドを実行(CPU使用を控えめに)

nice -n 15 tar -czf archive.tar.gz myfolder/

→ ナイス値「15」で tar を実行。低めの優先度でバックグラウンド作業に最適。

2. デフォルトのナイス値で実行(値を指定しない)

nice top

→ 通常は 10 が使われます(ディストリビューションにより異なる場合あり)。

3. 高優先度(低ナイス値)で実行(管理者権限が必要)

sudo nice -n -5 make

→ コンパイル作業などを優先させたい場合。

🛠 補足:現在のナイス値を確認する

ps -o pid,ni,cmd -C <コマンド名>

例:

ps -o pid,ni,cmd -C tar

ni がナイス値を表します。

reniceとは?

renice は、すでに実行中のプロセスの「nice値(優先度)」を変更するためのコマンドです。
nice は実行時に優先度を指定するのに対し、renice後から調整する用途で使います。


🔧 基本構文

renice [ナイス値] -p [プロセスID]

✅ 使用例

1. 実行中のプロセスの優先度を下げる(通常ユーザーでも可)

renice 10 -p 12345

→ プロセスID 12345 の nice値を「10」に変更(優先度を下げる)

2. 優先度を上げる(負の値は root 権限が必要)

sudo renice -5 -p 12345

→ 優先度を高く(よりCPUを使いやすく)する。

💡 複数のプロセスに一括適用も可能

renice 5 -p 1111 -p 2222 -p 3333

🔍 対象をユーザーやグループでも指定可能

renice 5 -u username     # 特定ユーザーの全プロセス
renice 5 -g groupname # 特定グループの全プロセス

■ jobs / fg / bg:ジョブの管理

ジョブとは、シェル内で動いているプロセスのことです。

command &

コマンドの末尾に&をつけるとバックグラウンドで実行されます。

jobs      # 実行中のジョブを一覧表示
fg %1 # ジョブ番号1をフォアグラウンドに移動
bg %1 # 停止中のジョブをバックグラウンドで再開

バックグラウンドで実行している「tail -f file1.txt」を
fgコマンドでフォアグラウンドに移動させます。

ログアウト後にも実行が継続されるようにシグナルを送信するコマンド3つ

🔹 nohup(ノーハップ)

  • 用途:ログアウト後もコマンドを継続して実行させたいとき。
  • 使い方nohup your-command &
  • 特徴
    • 標準出力は nohup.out に出力される。
    • セッションを保持しない(再接続不可)。

🔹 screen(スクリーン)

  • 用途:仮想端末を作成し、切断しても再接続できる。
  • 使い方screen Ctrl + A, 次に D でデタッチ(切り離し)
  • 特徴
    • 軽量。
    • セッション再接続可能(screen -r)。

🔹 tmux(ティーマックス)

  • 用途screen のモダンな代替。より高機能なターミナルマルチプレクサ。
  • 使い方tmux Ctrl + B, 次に D でデタッチ
  • 特徴
    • 複数ウィンドウやペインの分割が可能。
    • セッション管理がしやすく、スクリプト連携にも向く。

✅ 比較まとめ

ツールセッション再接続標準出力の保存ウィンドウ分割代表的用途
nohup×nohup.out×バックグラウンド実行
screen任意(手動)△(ウィンドウのみ)長時間実行や監視
tmux任意(手動)複数タスク同時操作

■ まとめ

Linuxのプロセス管理は、サーバーの安定稼働を支える上で欠かせないスキルです。以下のポイントを押さえておきましょう:

  • 実行中のプログラムはプロセスとして動作する
  • pstop でプロセスの状態を監視
  • kill で問題のあるプロセスを終了
  • nice / renice で負荷の調整
  • ジョブ操作もシェル運用では重要

これらはLPIC-1/LinuC-1試験でも頻出なので、ぜひ手を動かしながら慣れていきましょう!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次