Os utilitários pgrepe pkillforam introduzidos no Solaris 7 da Sun e, como observou o g33klord , eles adotam um padrão como argumento que é comparado aos nomes dos processos em execução. Embora pgrepapenas imprima uma lista de processos correspondentes, pkillenviará o sinal especificado (ou SIGTERMpor padrão) para os processos. As opções e semânticas comuns entre pgrepe são pkillúteis quando você deseja ter cuidado e primeiro revise os processos de correspondência de lista e pgrep, em seguida, continue com eles pkill. pgrepe pkillsão fornecidos pelo os procps pacote, que também oferece outros /procutilitários do sistema de arquivos, como ps, top, free, uptimeentre outros.
O killallcomando é fornecido pelo pacote psmisc e difere do pkillfato de, por padrão, corresponder exatamente ao nome do argumento (até os 15 primeiros caracteres) ao determinar os sinais aos quais os processos serão enviados. A opção -e, --exactpode ser especificada para também exigir correspondências exatas para nomes com mais de 15 caracteres. Isso torna killallum pouco mais seguro de usar em comparação com pkill. Se o argumento especificado contiver /caracteres barra ( ), o argumento será interpretado como um nome de arquivo e os processos executando esse arquivo específico serão selecionados como destinatários do sinal. killalltambém suporta correspondência de expressão regular de nomes de processos, por meio da opção -r,--regexp
Há outras diferenças também. O killallcomando, por exemplo, possui opções para a correspondência de processos por idade ( -o, --older-thane -y, --younger-than), enquanto pkillpode ser dito para matar apenas processos em um terminal específico (por meio da -topção). Claramente, então, os dois comandos têm nichos específicos.
Observe que o killallcomando nos sistemas descendentes do Unix System V (principalmente o Solaris da Sun , o AIX da IBM e o HP-UX da HP ) mata todos os processos executáveis por um usuário específico, encerrando o sistema efetivamente se executado pela raiz.
Os utilitários psmisc do Linux foram portados para o BSD (e na extensão Mac OS X ); portanto killall, segue a semântica "kill process by name".