Linuxのプロセス管理をマスターしよう!

目次

プロセス管理とは?

Linuxのプロセス管理は、システムで実行中のアプリケーションやタスクを監視・制御するために非常に重要です。
ここでは、プロセスの表示や終了、バックグラウンド/フォアグラウンドの管理を行うためのコマンドを紹介します。

psコマンド:現在のプロセスを確認する

psコマンドは、現在実行中のプロセスを確認するために使います。
よく使われるオプションとしては以下があります。

  • a: 全ユーザーのプロセスを表示
  • u: プロセスの詳細情報(ユーザー、CPU、メモリ使用率など)を表示
  • x: 制御端末に関連しないプロセスも表示

以下のコマンドを実行してみましょう。

ps aux

試してみよう!

  1. ターミナルを開き、ps auxを実行してみましょう。
  2. 自分のシステムで動作しているプロセスの一覧が表示されます。
  3. PID列を確認し、各プロセスのIDを確認しましょう。

表示結果の例

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1 103248  8492 ?        Ss   11:00   0:01 /sbin/init
root       251  0.0  0.0  45200  3704 ?        Ss   11:00   0:00 /usr/lib/systemd/systemd-journald
user      1001  0.3  1.2 234324 125984 ?       Ssl  11:01   0:07 /usr/bin/gnome-shell
user      1356  0.1  0.9 169412  91204 ?       Sl   11:01   0:05 /usr/lib/firefox/firefox

topコマンド:リアルタイムでシステムの状態を監視する

topコマンドは、システム全体のプロセスをリアルタイムで監視するために使われます。
主なオプションとしては以下が挙げられます。

  • -u [ユーザー名]: 特定のユーザーのプロセスのみ表示
  • -p [PID]: 指定したPIDのプロセスのみ表示
  • -n [回数]: 指定した回数だけ更新して終了
top

試してみよう!

  1. topコマンドをターミナルで実行してみましょう。
  2. リアルタイムでプロセスが表示され、CPUやメモリ使用率が確認できます。
  3. 数秒間観察して、プロセスの状況がどのように変化するか確認しましょう。
  4. qを押してtopコマンドを終了します。

表示結果の例

top - 11:30:01 up  2:00,  2 users,  load average: 0.23, 0.25, 0.35
Tasks: 231 total,   1 running, 230 sleeping,   0 stopped,   0 zombie
%Cpu(s):  3.2 us,  1.0 sy,  0.0 ni, 95.5 id,  0.1 wa,  0.0 hi,  0.2 si,  0.0 st
MiB Mem :  7930.1 total,  1204.3 free,  2640.4 used,  4085.4 buff/cache
MiB Swap:  4096.0 total,  4096.0 free,     0.0 used.  4784.5 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
  123 root      20   0  125400  11200   6704 S   2.3   0.4   0:01.12 apache2
  321 user      20   0  184376  25604   8840 S   1.5   0.6   0:03.10 firefox
  432 user      20   0  155780   8456   6120 S   0.8   0.4   0:02.34 gnome-shell

killコマンド:プロセスを強制終了する

killコマンドは、プロセスを終了するために使われます。
以下のオプションがよく使用されます。

  • -9: 強制的にプロセスを終了(SIGKILL)
  • -15: 通常の終了シグナル(SIGTERM)

しかし、初学者が誤って重要なプロセスを終了してしまうと、
システムの不安定さにつながる可能性があります。

そこで、試験的に終了するプロセスをあらかじめ作成し、
そのプロセスを終了する方法を学びましょう。

まずは、sleepコマンドを使って簡単なプロセスを実行し
、そのプロセスをkillで終了します。

sleep 300 &

上記のコマンドで300秒間(一時的に)待機するプロセスがバックグラウンドで実行されます。
&をつけることで、このプロセスはバックグラウンドで実行されます。

次に、ps auxを使って、このプロセスのPID(プロセスID)を確認します。

ps aux | grep sleep

試してみよう!

  1. sleep 300 &を実行してバックグラウンドでプロセスを開始します。
  2. ps aux | grep sleepsleepプロセスのPIDを確認しましょう。
  3. kill [PID]を使って、そのプロセスを終了します。

表示結果の例

user  12345  0.0  0.1  11200   800 pts/0    S    11:00   0:00 sleep 300

上記のように、sleep 300のプロセスが表示されます。
この場合、PIDが「12345」となっています。

次に、以下のコマンドを使ってこのプロセスを終了します。

kill 12345

終了後、ps aux | grep sleepを再度実行して、
プロセスが終了したか確認してください。

もしプロセスが正常に終了していれば、
sleepのプロセスは表示されなくなります。

bg / fgコマンド:バックグラウンドとフォアグラウンドの切り替え

bgfgコマンドは、バックグラウンドやフォアグラウンドの
プロセス管理を行うために使います。

  • bg: 一時停止中のプロセスをバックグラウンドで再開
  • fg: バックグラウンドで実行中のプロセスをフォアグラウンドに戻す

試してみよう!

  1. 長時間実行するコマンド(例:sleep 100)をターミナルで実行してみましょう。
  2. Ctrl + Zを押してプロセスを一時停止します。
  3. bgコマンドでプロセスをバックグラウンドで再開し、jobsコマンドで確認します。
  4. fgコマンドでフォアグラウンドに戻してみましょう。

表示結果の例

[1]+  Stopped                 sleep 100

バックグラウンドで再開するためには、以下を実行します。

bg

その後、fgでフォアグラウンドに戻すことができます。

fg

実行に時間がかかる処理の場合、フォアグラウンドで実行してしまうと
処理が終了するまでプロンプトが使用できなくなってしまいます。

そのため、時間がかかる処理はバックグラウンドで実行しておいて
その間に別の処理をフォアグラウンドで実行するなど
柔軟かつ効率的に作業が行えるということがこのコマンドのメリットです。

    目次