プロセスとは
プロセスは、タスクとも呼ばれ、プログラムの実行形式です。プログラムはディスクに保存され、プロセスはメモリで実行されます。プロセスには親子関係があります。プロセスは、1 つまたは複数の子プロセスを生成できます。複数のプロセスを並行して実行できます。
システム プロセスの一覧表示
プロセス ステータス (ps) コマンドは、シェルに関連付けられているプロセスを一覧表示します。
# ps [options]
各プロセスについて、ps コマンドは PID を表示します 、端末識別子 (TTY )、累積実行時間 (TIME) )、およびコマンド名 (CMD) )。たとえば、ps コマンドを使用して、システムで現在実行中のプロセスを一覧表示します。
# ps PID TTY TIME CMD 1442 pts/1 00:00:00 sudo 1448 pts/1 00:00:00 su 1449 pts/1 00:00:00 bash 1666 pts/1 00:00:00 ps
ps コマンドには、追加のプロセス情報を表示するために使用できるいくつかのオプションがあります。
- -a :ターミナルに関連付けられていないプロセス グループ リーダーとプロセスを除く、最も頻繁に要求されるすべてのプロセスに関する情報を出力します
- -e :現在実行中のすべてのプロセスに関する情報を出力します
- -f :完全なリストを生成します
- -l :長いリストを生成します
- -o 形式 :フォーマットで指定されたフォーマット仕様に従って情報を書き込みます。 -o オプションは複数指定できます。形式指定は、すべての形式オプション引数をスペース文字で区切って連結したものとして解釈されます。
すべてのプロセスの一覧表示
たとえば、「ps -ef」を使用します。 ‘ システム上で実行するように現在スケジュールされているすべてのプロセスを一覧表示するコマンド。
# ps -ef | more
ここで、
- UID :プロセスの所有者のユーザー名
- PID :プロセスの一意のプロセス識別番号
- PPID :プロセスの親プロセス識別番号
- STIME :プロセスが開始された時刻 (hh:mm:ss)
- TTY :プロセスの制御端末。システム プロセス (デーモン) には疑問符 (?) が表示され、ターミナルを使用せずにプロセスが開始されたことを示します。
- 時間 :プロセスの累積実行時間
- CMD :コマンド名、オプション、および引数
プロセスの終了
不要なプロセスを終了する必要がある場合があります。プロセスが無限ループに陥ったか、ハングした可能性があります。所有しているプロセスを強制終了または停止できます。次の 2 つのコマンドを使用して、1 つまたは複数のプロセスを終了できます。
– kill
– pkill
kill コマンドと pkill コマンドは、プロセスに終了を指示するシグナルを送信します。各シグナルには、番号、名前、および関連付けられたイベントがあります。以下は、最も一般的に使用される信号とその機能の一部です。
番号 | 名前 | 説明 |
---|---|---|
1 | ほっと一息 | 設定ファイルの再読み込み |
2 | シギント | キーボードによる割り込み (ctrl+c) |
9 | シグキル | kill プロセス |
15 | SIGTERM | プロセスをすぐに終了します。 (クリーンアップが可能なように制御された方法でプロセスを終了します) |
18 | SIGCONT | STOP で停止したプロセスを続行 |
19 | ストップ | プロセスを停止 |
kill コマンドを使用してプロセスを終了する
関連するプロセスに適切なシグナルを発行することにより、任意のプロセスを終了できます。 kill コマンドは、デフォルトで終了シグナルであるシグナル 15 を送信します。このシグナルにより、プロセスは正常に終了します。 kill コマンドは、1 つ以上のプロセスに終了シグナルを送信します。 kill コマンドを使用する構文は次のとおりです。
# kill [-signal] PIDs注意 注:kill コマンドは、所有しているプロセスのみを終了します。 root ユーザーは、任意のプロセスで kill コマンドを使用できます。
プロセスを終了する前に、プロセスの PID を知る必要があります。 ps または pgrep コマンドを使用して、プロセスの PID を見つけることができます。また、1 つのコマンド ラインに複数の PID を入力して、同時に複数のプロセスを終了することもできます。 kill コマンドの例を見てみましょう。以下に示すように、プロセス「sleep 400」を強制終了します。
# ps -ef | grep sleep root 1337 1218 0 07:33 pts/0 00:00:00 sleep 400
# kill -9 1337
# ps -ef | grep sleep #
pkill または killall コマンドを使用してプロセスを終了する
または、pkill または killall コマンドを使用して、プロセスに終了シグナルを送信することもできます。
# pkill [-options] PIDs
または
# killall [-options] PIDs
pkill/killall コマンドでは、プロセスの PID ではなく名前を指定する必要があります。たとえば、pkill コマンドを使用して dtmail プロセスを終了します。
# pkill dtmail # pgrep -l mail #
プロセスの強制終了:シグナル 9
一部のプロセスは、kill コマンドが送信するデフォルトのシグナル 15 を無視します。プロセスがシグナル 15 に応答しない場合は、kill または pkill コマンドでシグナル 9 を使用して強制的に終了させることができます。
# kill -9 PID
または
# pkill -9 process_name注意 :シグナル 15 を送信しても、プロセスが適切に強制終了されるとは限りません。シグナルがプロセスによってキャッチされた場合にのみ、プロセスは自分自身を順番にクリーンアップして終了します。そうでなければ、死ぬだけです。