Como posso matar um processo com uma frase em seu nome? [duplicado]

6

Eu preciso matar um processo que contém myName em sua descrição. Atualmente estou fazendo:

ps -ax |grep myName
I see PID
kill -9 PID

Como posso fazer o mesmo com um comando sem entrar no PID?

    
por vico 22.04.2016 / 11:48

5 respostas

6

Se myName é o nome do processo / executável que você quer matar, você pode usar:

pkill myName

pkill por padrão envia o sinal SIGTERM (sinal 15). Se você quiser o SIGKILL ou o sinal 9, use:

pkilll -9 myName

Se myName não for o nome do processo ou, por exemplo, for um argumento para outro comando (longo), pkill (ou pgrep ) poderá não funcionar como esperado. Então você precisa usar a opção -f . De man kill :

-f, --full
              The pattern is normally only matched against the  process  name.
              When -f is set, the full command line is used.
NOTES
The process name used for matching is limited to the 15 characters present
   in the output of /proc/pid/stat.  Use the -f option to match  against  the
   complete command line, /proc/pid/cmdline.

Então:

pkill -f myName

ou

kill -9 $(pgrep -f myName)
    
por Ron 22.04.2016 / 14:21
5

Com o nome de um comando, use:

pkill -9 myscript

Se você estiver procurando por uma string na linha de comando:

kill -9 $(ps ax | grep myName | fgrep -v grep | awk '{ print  }')

Tenho que avisar: o comando acima pode enviar um sinal SIGKILL para mais de um processo.

    
por Jay jargot 22.04.2016 / 11:54
1

Você poderia fazer um simples for loop sobre todos os PIDs associados ao nome do processo específico, assim:

$ for i in $( ps ax | awk '/[m]yName/ {print }' ); do kill ${i}; done

Isso eliminará todos os processos que contiverem a palavra: myName .

    
por krt 22.04.2016 / 13:42
1

Com pkill e enviando sinal 9 , você pode matar o processo pelo nome:

sudo pkill -9 myName
    
por siz 22.04.2016 / 14:30
0

Existem dois comandos muito precisos pgrep e pkill que permitem inserir o termo de pesquisa ou parte do nome do comando, e fornecerá o (s) PID (s) do processo ou (no caso de pkill ) matar esse processo.

$ pgrep -f firefox                                                             
23699

A execução do mesmo comando com pkill e -f flag fechará todas as janelas do Firefox.

O sinalizador -f é necessário especificamente para pesquisar por toda a linha de comando de um processo.

    
por Sergiy Kolodyazhnyy 22.04.2016 / 16:00