segunda-feira, 26 de abril de 2010

Os comandos pgrep e pkill

Quem é usuário antigo de sistemas Unix e derivados, provavelmente já gastou os dedos digitando coisas como:

  ps -ef | grep rubens 

Mas como tudo no mundo do software livre, em que a ordem é simplificar e economizar tempo, veio alguém e criou os comandospgrep e pkill.

Como o nome mesmo indica, pgrep significa process grep, que na verdade é o comando anterior aglutinado em apenas um. Por exemplo, eu quero descobrir os PID (process id) de todos os programas do usuário rubens associados ao Firefox:

  pgrep -u rubens  firefox   9397 

Se eu quiser matar algum processo, eu posso fazê-lo de forma genérica, eliminando todos os processos, de todos os usuários, ou posso também atuar de forma seletiva:

  pkill firefox 

ou

  pkill -u rubens firefox 

Além de terminar processos, eu posso usar o comando pgrep em combinação com outros. A documentação do programa dá um exemplo interessante, em que o comando pgrep é usado para redefinir a prioridade de um programa:

  renice +4 `pgrep netscape` 

O programa netscape irá rodar exigindo menos recursos da máquina, sendo mais nice :-)

Existem diversas possibilidades, mas as mais comuns e úteis são mesmo as que foram apresentadas. Uma outra diretiva bastante útil, é a diretiva "-l", que faz com que o nome completo do processo seja listado juntamente com sua identificação:

  $ pgrep -l ssh   1407 ssh-agent   2204 sshd   8162 ssh 

Os programas pgrep e pkill fazem parte do pacote procps e podem ser instalados, em sistemas Debian e derivados, com o comando:

  apt-get install procps