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 ".