Pages

Friday, August 11, 2006

Finalizando todos os processos de um usuário

Para matar um programa com o comando kill é preciso do número PID do processo, para conseguir o número PID, ou você usa pidof programa ou lista todos os processos e olha o PID do programa que te interessa. E se você quiser finalizar todos os processos de um determinado usuário ? E se tiver mais de um número de PID referente aquele processo (como o apache) ?

Uma solução vem do comando abaixo:

ps auxww | grep "mitre" | awk '{print $2}'

Com ele, nós listamos todos os PID do usuario mitre. Ainda podemos com a modificação do comando abaixo:

ps auxww | grep "apache" | awk '{print $2}'

listar todos os processos que contenham a expressão regular "apache".

Essencialmente, podemos listar todos os PIDs de qualquer processo que possa ser identificado por uma expressão regular apropriada como argumento do comando intermediário "grep".

Agora que temos uma lista de PIDs, tudo que temos que fazer é executar o comando kill, como nos exemplos:

kill -9 $(ps auxww | grep "mitre" | awk '{print $2}')

kill -9 $(ps auxww | grep "apache" | awk '{print $2}')

Nota: É possível fazer um serviço similar com o comando killall, eliminando os dois redirecionamentos utilizados nas linhas acima, mas eu particularmente prefiro utilizar o comando kill ao killall. Pode ser apenas uma sensação equivocada, mas eu considero o kill mais eficiente do que o killall. Além disso, podemos utilizar inicialmente:
ps auxww | grep "apache" ou ps auxww | grep "mitre"
para ter certeza de que selecionamos o processos corretos, isso permite mais controle sobre as decisões do que com comando killall.

Referência: How to kill a list of PID's with one operation

Technorati Tags:

2 comments:

  1. Gostei da sua dica, estou estudando o awk, coisa que vinha protelando há tempos, mas não é que ele é legal. Criei no meu delicious uma tag mitre :)

    ReplyDelete
  2. O curioso é que sempre que eu adiciono alguma coisa no del.icio.us eu me lembro de um texto seu. ... o que diz: adicione comentários a seus links ...

    Um dia eu ainda vou ter essa disciplina.

    Abraços.

    ReplyDelete