プロセス管理とは?
Linuxのプロセス管理は、システムで実行中のアプリケーションやタスクを監視・制御するために非常に重要です。
ここでは、プロセスの表示や終了、バックグラウンド/フォアグラウンドの管理を行うためのコマンドを紹介します。
psコマンド:現在のプロセスを確認する
ps
コマンドは、現在実行中のプロセスを確認するために使います。
よく使われるオプションとしては以下があります。
a
: 全ユーザーのプロセスを表示u
: プロセスの詳細情報(ユーザー、CPU、メモリ使用率など)を表示x
: 制御端末に関連しないプロセスも表示
以下のコマンドを実行してみましょう。
ps aux
試してみよう!
- ターミナルを開き、
ps aux
を実行してみましょう。 - 自分のシステムで動作しているプロセスの一覧が表示されます。
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
試してみよう!
top
コマンドをターミナルで実行してみましょう。- リアルタイムでプロセスが表示され、CPUやメモリ使用率が確認できます。
- 数秒間観察して、プロセスの状況がどのように変化するか確認しましょう。
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
試してみよう!
sleep 300 &
を実行してバックグラウンドでプロセスを開始します。ps aux | grep sleep
でsleep
プロセスのPIDを確認しましょう。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コマンド:バックグラウンドとフォアグラウンドの切り替え
bg
とfg
コマンドは、バックグラウンドやフォアグラウンドの
プロセス管理を行うために使います。
bg
: 一時停止中のプロセスをバックグラウンドで再開fg
: バックグラウンドで実行中のプロセスをフォアグラウンドに戻す
試してみよう!
- 長時間実行するコマンド(例:
sleep 100
)をターミナルで実行してみましょう。 Ctrl + Z
を押してプロセスを一時停止します。bg
コマンドでプロセスをバックグラウンドで再開し、jobs
コマンドで確認します。fg
コマンドでフォアグラウンドに戻してみましょう。
表示結果の例
[1]+ Stopped sleep 100
バックグラウンドで再開するためには、以下を実行します。
bg
その後、fg
でフォアグラウンドに戻すことができます。
fg
実行に時間がかかる処理の場合、フォアグラウンドで実行してしまうと
処理が終了するまでプロンプトが使用できなくなってしまいます。
そのため、時間がかかる処理はバックグラウンドで実行しておいて
その間に別の処理をフォアグラウンドで実行するなど
柔軟かつ効率的に作業が行えるということがこのコマンドのメリットです。