Bash

當最近的程序是“notify-send”時,為什麼我不能在 Bash 中使用帶有參數擴展的 kill $!

  • June 14, 2021

根據 Bash:特殊參數

($!) 擴展為最近放入後台的作業的程序 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?殺死這樣一個過程的正確方法是什麼?

注意:我知道我可以指定超時,但這是一個不同的問題。

notify-send不會執行任何時間長度:它啟動、連接到notify-osd、傳遞要顯示的通知消息,然後終止。

當您執行該kill命令時,notify-send它已經自行終止。您看到的通知由 提供notify-osd

引用自:https://unix.stackexchange.com/questions/273802