Por que não consigo usar 'kill $!' com expansão de parâmetro no Bash, quando o processo mais recente é “notify-send”?

3

De acordo com o Bash: Parâmetros especiais :

($!) Expands to the process ID of the job most recently placed into the background, whether executed as an asynchronous command or using the bg builtin

Eu posso utilizar isso da seguinte maneira:

$ leafpad &
[2] 3962
$ kill $!

Isso funciona e mata o processo mais recente (por exemplo, leafpad ), mas para notify-send parece não funcionar:

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

E eu tenho que usar killall notify-osd para matá-lo.

Então, eu quero saber porque kill $! não funciona para notify-send ? E qual é a maneira correta de matar esse processo?

Nota: sei que posso especificar o tempo limite, mas esta é uma questão diferente.

    
por Pandya 02.04.2016 / 10:45

1 resposta

6

notify-send não é executado por qualquer período de tempo: ele inicia, conecta-se a notify-osd , entrega a mensagem de notificação a ser exibida e termina.

No momento em que você executar o comando kill , notify-send já foi encerrado sozinho. A notificação que você está vendo é veiculada por notify-osd .

    
por 02.04.2016 / 14:10