man page
には、次のように書かれています。
0 All processes in the current process group are signaled
そして私はこのように試しました:
$ man kill &
[1] 15247
$
[1]+ Stopped man kill
$ kill 0
$ ps
15247 pts/41 00:00:00 man
私が理解したように、kill 0
は、pid15247
を含む現在のプロセスのすべてのプロセスを強制終了します。ただし、この例では何もしませんでした。誰かがそれを使用する方法についてのアイデアを持っていますか?
kill 0
がkill manページ(debian)でどのように動作するかについてのメモが見つかりませんでした。
しかし、私は2つのコメントがあります:
(1)「プロセスグループ」はあなたが期待するものではないかもしれません。プロセスグループID(PGID)はps -o "%p %P %r %c %a"
で表示できます。
$ ps -o "%p %P %r %c %a"
PID PPID PGID COMMAND COMMAND
12124 12123 12124 zsh -zsh
12212 12124 12212 man man kill
12226 12212 12212 less less
12302 12124 12302 ps ps -o %p %P %r %c %a
したがって、man
と表示ページャーツール(less
)は同じプロセスグループにありますが、シェル(私の場合はzsh)とは異なります。
(2)おそらく2つの異なるkill
コマンドがあります。 1つはbash
(bash(1)、セクション「Shell BUILTINCOMMANDS」を参照)および外部の/bin/kill
に組み込まれています。これら2つは異なる動作をする可能性があります! kill
の代わりにbuiltin kill
またはcommand kill
と入力することで、実行するものを明示的に指定できます。パスを指定して実行することもできる外部コマンド:/bin/kill
。
すべてのプロセスを停止してログオフするには、次のように入力します。
kill -kill 0
これにより、シグナル9、SIGKILLシグナルが、送信者のプロセスグループIDと等しいプロセスグループIDを持つすべてのプロセスに送信されます。シェルはSIGKILLシグナルを無視できないため、これによりログインシェルも停止し、ログオフします。
これはIBMのAIXマニュアルですが、おそらくその概念が当てはまります。
この機能はLinuxの「kill」には存在しません(私が見ることができるように);しかし、これが「キル」の動作です。
0を強制終了しても、pid 0は強制終了されません。代わりに、current group内のすべてのプロセスを強制終了するオプションです。 。コマンドを使用すると、killコマンドを発行したシェルのプロセスグループID(GID)内のすべてを強制終了します。