A pgrep
e pkill
os utilitários foram introduzidos no Solaris 7 da Sun e, como g33klord observou , eles pegam um padrão como argumento que é comparado com os nomes dos processos em execução. Enquanto pgrep
simplesmente imprime uma lista de processos correspondentes, pkill
enviará o sinal especificado (ou SIGTERM
por padrão) aos processos. As opções e semânticas comuns entre pgrep
e pkill
são úteis quando você deseja ter cuidado e primeiro revisar os processos de correspondência de lista com pgrep
e, em seguida, prosseguir para eliminá-los com pkill
. pgrep
e pkill
são fornecidos pelo pacote procps , que também fornece outros utilitários de sistema de arquivos /proc
, como ps
, < a href="http://linux.die.net/man/1/top" title="Página de manual para o topo"> top
, free
, uptime
entre outros.
O comando killall
é fornecido pelos utilitários psmisc , e difere de pkill
em que, por padrão, corresponde exatamente ao nome do argumento (até os primeiros 15 caracteres) ao determinar os sinais dos processos para os quais será enviado. A opção -e
, --exact
pode ser especificada para exigir também correspondências exatas para nomes com mais de 15 caracteres. Isso torna killall
um pouco mais seguro em comparação com pkill
. Se o argumento especificado contiver caracteres slash ( /
), o argumento será interpretado como um nome de arquivo e os processos em execução nesse arquivo específico serão selecionados como destinatários de sinal. killall
também suporta correspondência de expressões regulares de nomes de processos, por meio da opção -r
, --regexp
.
Existem outras diferenças também. O comando killall
, por exemplo, tem opções para correspondência de processos por idade ( -o
, --older-than
e -y
, --younger-than
), enquanto pkill
pode ser instruído a apenas matar processos em um terminal específico (via -t
opção). Claramente, então, os dois comandos têm nichos específicos.
Observe que o comando killall
nos sistemas descendente de Sistema Unix V (notavelmente Solaris da Sun , AIX da IBM e HP-UX da HP ) mata todos os processos elimináveis por um usuário em particular, desligando efetivamente o sistema se executado por root.
Os utilitários psmisc do Linux foram portados para a BSD (e em extensão Mac OS X ), portanto killall
segue a semântica" processar processos por nome ".