当最近的进程是“notify-send”时,为什么我不能在 Bash 中使用带有参数扩展的 `kill $!` ?

当最近的进程是“notify-send”时,为什么我不能在 Bash 中使用带有参数扩展的 `kill $!` ?

根据巴什的说法:特殊参数:

($!) 扩展为最近放入后台的作业的进程 ID,无论是作为异步命令执行还是使用 bg 内置命令

我可以按如下方式利用它:

$ 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

相关内容