kill コマンド

目的

実行中のプロセスにシグナルを送信します。

構文

シグナルをプロセスに送る場合

kill-s SignalName | SignalNumber } ] ProcessID ...

kill- SignalName |  - SignalNumber ] ProcessID ...

シグナル名をリストする

kill -l [ ExitStatus ]

Description

kill コマンドは、実行中のプロセスにシグナル (デフォルトでは SIGTERM シグナル) を送信します。 このコマンドのデフォルトのアクションは、プロセスの通常停止です。 プロセスを停止したい場合は、ProcessID 変数にプロセス ID (PID) を指定します。 シェルはバックグラウンドで実行中の各プロセスの PID を報告します (複数のプロセスをパイプライン内で始動させない場合。複数のプロセスを始動させている場合は、シェルは最後のプロセスの番号を報告します)。 また、ps コマンドを使用しても、コマンドのプロセス ID 番号を知ることができます。

root ユーザーは、kill コマンドを使用して任意のプロセスを停止させることができます。 root ユーザーでない場合、停止したいプロセスを開始しておく必要があります。

SignalName は、接頭部 SIG なしで、大文字と小文字を区別せずに認識されます。

SignalNumber に 0 が指定された場合、kill コマンドは、指定された PID の妥当性を検査します。

フラグ

項目 Description
-s{SignalName | SignalNumber} SIGKILL シグナルの -9 または KILL のように、 シグナル番号またはシグナル名としてシグナルを指定します。
-SignalName HUP のように、シグナル名を指定します。
-SignalNumber シグナル番号を指定します。

注: この構文で、デフォルト・シグナルで負の値の PID を指定するには、シグナルとして - - を指定する必要があります。 指定しないと、最初のオペランドが SignalNumber として解釈されます。

ProcessID シグナル送信先のプロセスまたはプロセス・グループを表す 10 進整数を指定します。PID が正の値の場合、kill コマンドは、プロセス ID が PID に等しいプロセスを送ります。 PID の値が 0 の場合、kill コマンドは、送信側のプロセス・グループ ID と等しいプロセス・グループ ID を持つすべてのプロセスにシグナルを送信します。ただし、PID の値が 0 または 1 であるプロセスには、シグナルは送信されません。PID が -1 の場合、kill コマンドは、送信側の有効なユーザーが所有するすべてのプロセスにシグナルを送信します。 ただし、PID の値が 0 または 1 であるプロセスには、シグナルは送信されません。PID が -1 以外の負の値の場合、kill コマンドは、PID の絶対値に等しいプロセス・グループ ID を持つすべてのプロセスにシグナルを送信します。
-l 稼働システムでサポートされているすべてのシグナル名をリストします。
-lExitStatus 共通の SIG 接頭部を取り除いたシグナル名をリストします。ExitStatus が 10 進整数値の場合、そのシグナルに対応するシグナル名が表示されます。ExitStatus がシグナルによって終了されたプロセスに対応する終了状況の場合、そのプロセスを終了したシグナルに対応するシグナル名が表示されます。

終了状況

このコマンドは次の終了値を戻します。

項目 Description
0 ProcessID オペランドについて 1 つ以上の照合プロセスが検出され、1 つ以上の照合プロセスに指定したシグナルが正常に送信されました。
>0 エラーが発生しました。

  1. 指定のプロセスを停止するには、次のコマンドを入力します。
    kill 1095
    これによって、デフォルトのシグナル SIGTERM が送信され、プロセス 1095 が停止します。 SIGTERM シグナルを無視、またはオーバーライドするよう特別な調整がされていると、実際にはプロセス 1095 が停止しないこともあるので注意してください。
  2. デフォルトのシグナルを無視する複数のプロセスを停止するには、次のコマンドを入力します。
    
    kill -kill 2098 1569
    これによって、シグナル 9、つまり SIGKILL シグナルがプロセス 20981569 へ送られます。 SIGKILL シグナルは特殊なシグナルで、通常は無視したりオーバーライドできません。
  3. すべてのプロセスを停止してログアウトするには、次のコマンドを入力します。
    
    kill -kill 0
    これによってシグナル 9、つまり SIGKILL シグナルが、送信側のプロセス・グループ ID に等しいプロセス・グループ ID を持つすべてのプロセスに送信されます。シェルは SIGKILL シグナルを無視できないので、このコマンドはログイン・シェルも停止し、ログアウトします。
  4. ユーザーが所有するすべてのプロセスを停止するには、次のコマンドを入力します。
    kill -9 -1
    このコマンドにより、シグナル 9、つまり SIGKILL シグナルが、有効なユーザーが所有するすべてのプロセスに送信されます。このすべてのプロセスには、別のワークステーションで始動されたプロセスや別のプロセス・グループに属しているプロセスも含まれます。ユーザーから要求されたリストが出力されているときも、プロセスは停止されます。
  5. 異なるシグナル・コードをプロセスに送るには、次のコマンドを入力します。
    
    kill  -USR1  1103
    SIGUSR1 などのようにプロセスを停止させないシグナルも多いので、kill というコマンド名は誤解を招きやすい名前です。 SIGUSR1 によるアクションは、ユーザーが実行中の特定のアプリケーションによって定義されます。

    注: この形式の kill コマンドで、 シグナル 15、つまり SIGTERM シグナルを送るには、-15 または TERM を明示的に指定する必要があります。

ファイル

項目 Description
/usr/include/sys/signal.h シグナル名を指定します。