Como posso matar processos de acordo com o nome deles?

0

Eu estou procurando uma maneira de matar processos de acordo com seu nome ('job_runner_'). isto é o que eu faço atualmente, eu corro o seguinte comando: ps -ef |grep job_runner_ e, em seguida, execute kill -9 em cada um dos processos retornados (pode haver vários processos retornados).

Como posso fazer isso com um único comando?

    
por Ran 21.06.2012 / 12:13

5 respostas

2

killall que é mencionado está no pacote psmisc (nomeado pelo menos em instalações baseadas no Debian). Outra alternativa é pkill que está no pacote procps .

Você deve usar uma ferramenta criada para essa finalidade. Se você realmente quer realmente fazer isso analisando ps output, você pode fazer algo como

ps -ao pid,comm | awk '/job_runner_/{system("kill "$1)}'
    
por 21.06.2012 / 12:23
0

killall fará isso por você.

Name

killall - kill processes by name

Observe que a opção -r interpretará o nome como um regexp e, portanto, satisfará seu requisito de eliminar vários processos com nomes semelhantes.

Note também que é preferível não matar processos imediatamente usando a opção -9. Em vez disso, deve-se usar um kill normal, pois ele dará ao processo a chance de capturar o sinal, realizar qualquer limpeza e, em seguida, sair corretamente. O uso de -9 não permitirá que o processo faça isso e só deverá ser usado para processos problemáticos / sem resposta.

    
por 21.06.2012 / 12:15
0

Use apenas pkill job_runner_ .

Você também pode verificar processos por nome com pgrep job_runner_ .

    
por 21.06.2012 / 12:32
0

Você pode fazer isso com killall

killall --regexp ^job_runner.*
    
por 21.06.2012 / 12:17
-1
ps -ef | grep job_runner_ | xargs kill -9

Tente este aqui.

    
por 21.06.2012 / 12:23

Tags