名前

killall - 名前を使ってプロセスを kill します

書式

killall [-Z, --context pattern] [-e, --exact] [-g, --process-group] [-i, --interactive] [-n, --ns PID] [-o, --older-than TIME] [-q, --quiet] [-r, --regexp] [-s, --signal SIGNAL, -SIGNAL] [-u, --user user] [-v, --verbose] [-w, --wait] [-y, --younger-than TIME] [-I, --ignore-case] [-V, --version] [--] name ...
killall -l
killall -V, --version

説明

killall は、指定したコマンドが実行されているプロセスすべてに対して、1 つのシグナルを送信します。 シグナル名が指定されなかった場合は SIGTERM が送信されます。

シグナルは名前によって指定することができます (たとえば -HUP-SIGHUP)。 また番号 (たとえば -1) やオプション -s を用いて指定することもできます。

コマンド名が (オプション -r を用いた) 正規表現ではなく、スラッシュ (/) を含んでいる場合は、 そのファイルを実行しているプロセスが kill の対象となるのであって、 ファイル名は関係ありません。

各コマンドの指定により kill されたプロセスが 1 つでもあれば killall はゼロを返します。 またコマンドの指定がなく、-u-Z の検索基準にマッチするプロセスが 1 つでもあればゼロを返します。 それ以外の場合、killall はゼロ以外を返します。

killall が自身のプロセスを kill することはありません (別の killall プロセスであれば kill します)。

オプション

-e, --exact

長い名前であっても、完全に一致することを求めます。 コマンド名が 15 文字以上あった場合、完全なコマンド名称が (スワップアウトされてしまっているなどして) わからない場合があります。 そういったときのために killall では、最初の 15 文字だけ一致すれば、それをすべて kill するようにしています。 この -e を用いた場合、15 文字しか一致していないものは処理スキップされます。 killall において -v-e が指定されていた場合、スキップしたものはメッセージ表示されます。

-I, --ignore-case

プロセス名の一致にあたって、大文字小文字を区別しません。

-g, --process-group

そのプロセスが属しているプロセスグループを kill します。 kill のためのシグナルは、グループに対して 1 度しか送信されません。 つまり複数のプロセスが同一のプロセスグループに属していたとしても、シグナル送信は 1 度だけです。

-i, --interactive

kill する前に対話的に確認を求めます。

-l, --list

使用できる signal をすべて一覧表示します。

-n, --ns

指定された PID の PID 名前空間との照合を行います。 デフォルトでは、全名前空間と照合します。

-o, --older-than

指定された時刻よりも古い (先に起動された) プロセスのみに一致します。 時刻は実数値に単位をつけて指定します。 単位に用いる s, m, h, d, w, M, y は、 秒、分、時間、日、週、月、年をそれぞれ表します。

-q, --quiet

kill するプロセスがなかった場合でも表示を行いません。

-r, --regexp

プロセス名のパターンを、regex(3) に従った POSIX 拡張正規表現として解釈します。

-s, --signal, -SIGNAL

SIGTERM 以外のシグナルを送信します。

-u, --user

指定されたユーザーが所有するプロセスのみ kill します。 コマンド名を指定するかどうかは任意です。

-v, --verbose

シグナルが正常に送信されたかどうかを表示します。

-V, --version

バージョン情報を表示します。

-w, --wait

kill されたプロセスがすべて終了するのを待ちます。 killall は、kill を行ったプロセスがまだ残っていないかどうかを、1 秒ごとに確認して、 1 つでも残っていれば返ってきません。 シグナルが無視される、効果がなかった、プロセスがゾンビ状態になった、という場合には、 killall が永久に待ち続けることもあります。

-y, --younger-than

指定された時刻よりも若い (後で起動された) プロセスのみに一致します。 時刻は実数値に単位をつけて指定します。 単位に用いる s, m, h, d, w, M, y は、 それぞれ秒、分、時間、日、週、月、年を表します。

-Z, --context

セキュリティコンテキストを指定します。 拡張正規表現によるパターンを用いて、これに一致するプロセスのみを kill します。 この指定は、 コマンドライン上において、 どの引数よりも前に指定しなければなりません。 コマンド名の指定は任意です。

ファイル

/proc

proc ファイルシステムがあるディレクトリ。

既知のバグ

ファイルの kill 処理は、 処理中にオープンし続けている実行ファイルに対してのみ作用します。 つまり不順 (impure) な実行ファイルは、 この方法では kill されません。

Linux 以外のシステムでは、 killall name を入力しても、 期待する動作にはならないことがある点に注意してください。 特権ユーザーが行う場合には、特に注意してください。

killall -w は、 スキャンを行っている際に、 1 つのプロセスが消失し、 同一 PID を使った新たな別プロセスが出現した場合には、 これを検出することはできません。

プロセスの名前が変更されると、 killall が正しく認識できなくなる場合があります。

killall では、 コマンドラインから指定できる名称の数に制限があります。 この数は unsigned long integer のサイズの 8 倍の数です。 この制限値は 32 ビットシステムでは、ほとんどが 32 となり、 同様に 64 ビットシステムでは通常 64 となります。

関連項目

kill(1), fuser(1), pgrep(1), pidof(1), pkill(1), ps(1), kill(2), regex(3).