Linux プロセスを学ぼう
プロセスとは、実行中のプログラムを管理する単位です。
プログラムは通常、ファイルとしてハードディスク上に格納されていますが、このプログラムがメモリ上に展開されてプログラムが実行されます。この実行中のプログラムがプロセスです。
プロセスが起動されると、プロセスごとに固有のID番号が割り当てられます。これをプロセスID(PID)といいます。プロセスIDはプロセスを特定する為に利用されます。
プロセスは、実行中のプロセスから起動され(これをフォークといいます)、親子関係があります。
起動元のプロセスを親プロセス、親プロセスが起動したプロセスを子プロセスといいます。
プロセスはプログラムの実行が終了すると、使用していたメモリを解放して消滅しますが、
プロセスの中には、プログラムの不具合や強制終了等で終了出来ずに残ってしまう場合があります。
この様な場合にはプロセスを強制終了させる必要があります。
プロセスの情報を確認する
プロセスの情報を確認するには、ps(ProceSe)コマンドを使って確認します。
| コマンド | 説明 |
|---|---|
| ps | プロセスの情報を表示する。 |
| 書式 | ps [オプション] |
| オプション | a 端末の全てのプロセスを表示する u ユーザー名なども表示する x 制御端末のないプロセスも表示する |
| 実行例 | システムで実行されている全てのプロセスを実行ユーザー名なども含めて表示する $ ps aux |

プロセスの親子関係を確認する
プロセスの親子関係を確認するには、pstreeコマンドを使って確認します。
| コマンド | 説明 |
|---|---|
| pstree | プロセスをツリー状に表示する。 |
| 書式 | pstree [オプション] |
| オプション | -p PIDを表示する -u ユーザーIDを表示する |
| 実行例 | プロセスをツリー状に表示する $ pstree |

プロセスの状況を継続的に確認する
プロセスの状況を継続的に確認するには、topコマンドを使って確認します。
| コマンド | 説明 |
|---|---|
| top | システムとプロセスの状況を継続的に表示する。 |
| 書式 | top [オプション] |
| オプション | -n 回数 表示を更新する回数を指定する -d 秒 表示を更新する間隔を秒で指定する -u ユーザー名 指定したユーザーのプロセスのみ監視する |
| 実行例 | システムとプロセスの状況を継続的に表示する $ top |
topコマンドの主な表示項目
| 表示項目 | 説明 |
|---|---|
| PID | プロセスID |
| USER | ユーザー名 |
| NI | nice値 |
| %CPU | CPUの使用率 |
| %MEM | メモリの使用率 |
| COMMAND | 実行されているコマンド |

プロセスの終了
プロセスを終了させるには、killコマンドを使用します。
| コマンド | 説明 |
|---|---|
| kill | PIDで指定したプロセスにシグナルを送る。 |
| 書式 | kill PID kill -シグナル PID kill [オプション] PID kill [オプション] |
| オプション | -シグナル 送信するシグナルを指定する -s シグナル 送信するシグナルを指定する -l シグナルの一覧を表示する |
| 実行例 | PIDが1651のプロセスにTERMシグナルを送る $ kill 1651 |
主なシグナル
| シグナル番号 | シグナル名 | 説明 |
|---|---|---|
| 1 | HUP | ハングアップ |
| 2 | INT | キーボードからの割り込み |
| 9 | KILL | 強制終了 |
| 15 | TERM | 通常終了(デフォルト) |
| 18 | CONT | 停止しているプロセスを再開 |
| 19 | STOP | 一時停止 |

プログラミングスキルを身に着けてITエンジニアとして活躍してみませんか?
ITエンジニアは、DX、AI、IoT時代を迎え、ますます需要が高っています。


