最も近いプロセスが "notify-send"の場合、Bashで引数拡張で `kill $!`を使用できないのはなぜですか?

最も近いプロセスが "notify-send"の場合、Bashで引数拡張で `kill $!`を使用できないのはなぜですか?

バッシュによると:特殊パラメータ:

($!)は、非同期コマンドとして実行されるか、bg組み込みコマンドを使用して最後にバックグラウンドに追加されたジョブのプロセスIDに展開されます。

次のようにこれを利用できます。

$ leafpad &
[2] 3962
$ kill $!

これは動作し、最も近いプロセス(たとえばleafpad)を終了しますが、notify-send動作しないようです。

$ notify-send Hello &
[2] 4052
$ kill $!
bash: kill: (4052) - No such process

killall notify-osd私はそれを殺すために使用する必要があります。

kill $!それでは、なぜ機能しないのか疑問に思いますnotify-send。これらのプロセスを終了する正しい方法は何ですか?

注:タイムアウトを指定できることはわかっていますが、これは別の質問です。

答え1

notify-send一定時間実行されません。起動し、に接続し、notify-osd表示する通知メッセージを転送してから終了します。

killコマンドを実行すると、それnotify-send自体が終了します。表示される通知はで提供されますnotify-osd

関連情報