kill
コマンドは kill
への非常に単純なラッパーです システムコール 、プロセス ID (PID) のみを認識します。 pkill
と killall
kill
のラッパーでもあります システムコール 、(実際には、システムコールを直接呼び出すlibcライブラリに)、プロセス名、プロセスの所有者、セッションIDなどに基づいてPIDを決定できます.
どのように pkill
と killall
作業は ltrace
を使用して見ることができます または strace
それらの上に。 Linux では、どちらも /proc
まで読み取ります。 ファイルシステム、および見つかった pid (ディレクトリ) ごとに、名前またはその他の属性によってプロセスを識別する方法でパスをトラバースします。これがどのように行われるかは、技術的に言えば、カーネルとシステムに固有です。通常、/proc/<PID>/stat
から読み取ります。 2 番目のフィールドとしてコマンド名が含まれています。 pkill -f
の場合 そして pgrep
/cmdline
を調べる 各 PID の proc エントリのエントリ。
pkill
と pgrep
readproc
を使用 システムコール、killall
ではない。パフォーマンスに違いがあるかどうかはわかりません。自分でベンチマークする必要があります。
kill と killall は、プロセスを強制終了する方法を提供するツールです。 1 つ目は PID、2 つ目は name.pgrep (リスト) と pkill (デフォルトでは kill) は、名前またはその他の属性によってプロセスにメッセージを送信する方法を提供するツールです。http://linux.die を参照してください。 net/man/1/pkill シグナルに関する詳細情報:http://linux.die.net/man/7/signal