kill コマンドの実行原理は、kill コマンドがシグナル (主に終了シグナル) とターゲット プロセスの PID をオペレーティング システム カーネルに送信し、システム カーネルがそれに基づいて指定されたプロセスに対して対応する操作を実行することです。受信した信号の種類。
kill コマンドの基本的な形式は次のとおりです。
[root@localhost ~]# kill [信号] PID
kill コマンドは PID に基づいてプロセスを特定するため、kill コマンドは PID のみを識別できますが、プロセス名は識別できません。Linux では、数十の異なるタイプのシグナルが定義されています。読者は、kill -l コマンドを使用して、すべてのシグナルとその番号を表示できます。ここでは、一般的に使用されるシグナルのほんの一部を示します。
信号番号 | 信号名 | 意味 |
---|---|---|
0 | 出口 | このメッセージは、プログラムの終了時に受信されます。 |
1 | HUP | 電話回線または端末接続を切断するハングアップ信号。この信号により、一部のプロセスが終了せずに再初期化される場合もあります。 |
2 | INT | これはプロセスを終了することを意味しますが、必須ではありません。一般的に使用される「Ctrl+C」キーの組み合わせは、kill -2 シグナルを発します。 |
3 | やめる | やめる。 |
9 | 殺す | プロセスを強制終了します。つまり、プロセスを強制的に終了します。 |
11 | 言う | セグメンテーション違反。 |
15 | 学期 | プロセスを正常に終了するのは、kill コマンドのデフォルトのシグナルです。 |
[例1] 標準的なkillコマンド。
[root@localhost ~]# service httpd start
#RPM パッケージにデフォルトでインストールされている Apache サービスを開始します
[root@localhost ~]# pstree -p 丨grep httpd | grep -v "grep" #
プロセス ツリーと PID を表示しますhttpd。httpd を表示する grep コマンドは、「httpd」キーワードを含むプロセスも生成するため、「-v」を使用して、「grep」キーワードを含むプロセスを逆に選択します。ここでは、pstree コマンドを使用してプロセスをクエリします。もちろん、次のこともできます。 ps および top コマンドも使用します。
|-httpd(2246)-+-httpd(2247)
| |-httpd(2248)
| |-httpd(2249)
| |-httpd(2250)
| |-httpd(2251)
[ root@localhost ~]# kill 2248
#PID 2248 の httpd プロセスを強制終了します。デフォルトのシグナルは 15 です。通常は停止します。 #デフォルトのシグナル
15 でプロセスを強制終了できない場合は、-9 シグナルを試してプロセスを強制終了してください
[root @localhost ~]# pstree -p | grep httpd | grep -v "grep"
|-httpd(2246>-+-httpd(2247)
| |-httpd(2249) |
|-httpd(2250)
| |-httpd( 2251)
#PID 2248 の httpd プロセスが消える
【例2】「-1」シグナルを使用してプロセスを再起動します。
[root@localhost ~]# kill -1 2246
「-1 (数値 1)」信号を使用して、httpd のメイン プロセスを再起動します
[root@localhost ~]# pstree -p | grep httpd | grep -v "grep"
| -httpd(2246)-+-httpd(2270)
| |-httpd(2271)
| |-httpd(2272)
| |-httpd(2273)
| |-httpd(2274)
#子 httpd プロセスの PID は、これは、httpd プロセスが一度再起動されたことを意味します。
【例3】「-19」信号を使用して処理を一時停止します。
[root@localhost ~]# vi test.sh #vi コマンドを使用してファイルを編集します。終了しないでください
[root@localhost ~]# ps aux | grep "vi" | grep -v "grep"
root 2313 0.0 0.2 7116 1544 pts/ 1 S+ 19:2.0 0:00 vi test.sh
#別の端末に切り替えて、このプロセスのステータスを確認します。コマンドは別の端末で実行されるため、プロセスのステータスは S (スリープ) と + (バックグラウンド) です
[root@localhost ~]# kill -19 2313
#-19 シグナルを使用して、PID 2313 のプロセスを一時停止します。vi インターフェイスで Ctrl+Z ショートカット キーを押すのと同じ
[root@localhost ~]# ps aux | grep "vi" | grep -v "grep"
root 2313 0.0 0.2 7116 1580 pts/1 T 19:20 0:00 vi test .sh
#2313 プロセスのステータスが T (一時停止) ステータスに変化していることに注意してください。この時点で、vi ターミナルに戻り、vi コマンドが一時停止されていることを確認し、コマンド プロンプトに戻りますが、2313 プロセスはバックグラウンドで停止したままになります。回復したい場合は、「kill -9 2313」コマンドでプロセスを強制終了するか、後章で学習するワーク管理を使用して回復することができます。