Por que o comando killall mata apenas uma instância do processo?

1

Às vezes, preciso matar o Google Chrome (do qual tenho duas janelas / instâncias abertas). Ambas as instâncias não são não no modo de navegação anônima.

O que eu faço é: (no Debian 8)

killall chrome && killall chrome

para ter duas janelas de cromo fechadas.

No entanto, eu li que o comando killall deve matar todas as instâncias de um programa, não apenas um.

Então eu estava pensando: por que o killall não mata todas as instâncias como o nome sugere?

    
por dragonmnl 26.01.2016 / 03:12

4 respostas

1

É possível que uma das instâncias do chrome esteja ignorando o sinal SIGTERM , esperando por um segundo para confirmar? killall -9 chrome pode fazer o que quiser.

    
por 26.01.2016 / 03:36
1

Eu tentei com 2 processos e parece funcionar -

jai@jai-VirtualBox:/tmp$ sleep 100 &
[1] 3996
jai@jai-VirtualBox:/tmp$ sleep 60 &
[2] 3997
jai@jai-VirtualBox:/tmp$ pgrep -l sleep
3996 sleep
3997 sleep
jai@jai-VirtualBox:/tmp$ killall -v sleep
Killed sleep(3996) with signal 15
Killed sleep(3997) with signal 15
[1]-  Terminated              sleep 100
[2]+  Terminated              sleep 60

jai@jai-VirtualBox:/tmp$ pgrep -l sleep
jai@jai-VirtualBox:/tmp$ 

Você poderia tentar novamente com -v ou -i (interativo)?

    
por 26.01.2016 / 11:17
1

você pode usar o topo do comando para mostrar o processo

top

para matar o processo

 kill PID_of_chrome
    
por 26.01.2016 / 11:50
1

O navegador Google Chrome gera vários segmentos na inicialização e, em seguida, gera threads extras para cada janela e / ou guia criada posteriormente.

Por padrão, killall envia um SIGTERM para todos processados com um nome específico ("chrome" no seu caso). Mas apenas os processos capazes de lidar com esse sinal continuarão com ele. Os que não conseguem lidar com o sinal SIGTERM não fecham. Você pode matá-los incondicionalmente com um killall -9

    
por 26.01.2016 / 12:05

Tags