Por que o “ps aux | grep X” da melhores resultados que “pgrep x “?

Um exemplo dos dois comandos filtrando o Firefox
[antergos@AntergosPC ~]$ pgrep firefox
8518
[antergos@AntergosPC ~]$ ps aux | grep firefox
anterg+ 8518 11.4 14.1 1803164 552216 ? Sl 08:25 21:32 firefox

Então, qual é a diferença entre esses dois comandos?
O “ps aux” inclui a linha de comando completa (caminho e parâmetros), enquanto “pgrep” só olha para os primeiros 15 caracteres do nome dos executáveis

Uns exemplos do comando e suas saídas:
[antergos@AntergosPC ~]$ ps wup $(pgrep -f firefox)
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
anterg+ 8518 11.4 14.1 1803228 550420 ? Sl 08:25 21:44 firefox
[antergos@AntergosPC ~]$ ps aux | grep firefox | grep -v grep
anterg+ 8518 11.4 14.1 1803228 550616 ? Sl 08:25 21:46 firefox
[antergos@AntergosPC ~]$ ps aux | grep f[i]refox
anterg+ 8518 11.4 14.1 1803356 549052 ? Sl 08:25 21:49 firefox
[antergos@AntergosPC ~]$ pgrep -a firefox
8518 firefox
Arquivo HELP do GREP:
grep --help
Uso: grep [OPÇÃO]... PADRÃO [ARQUIVO]...
Busca por PADRÃO em cada ARQUIVO ou entrada padrão.
PADRÃO é, por padrão, uma expressão regular básica (BRE).
Exemplo: grep -i "olá, mundo" menu.h main.c

Seleção e interpretação de expressão regular:
 -E, --extended-regexp PADRÃO é uma expressão regular estendida (ERE)
 -F, --fixed-strings PADRÃO são textos separados por nova linha
 -G, --basic-regexp PADRÃO é uma expressão regular básica (BRE)
 -P, --perl-regexp PADRÃO é uma expressão regular de sintaxe Perl
 -e, --regexp=PADRÃO usa PADRÃO como uma expressão regular
 -f, --file=ARQUIVO obtém PADRÃO do ARQUIVO
 -i, --ignore-case ignora diferenças entre maiúsculas/minúsculas
 -w, --word-regexp força PADRÃO a coincidir só com palavras inteiras
 -x, --line-regexp força PADRÃO a coincidir só com linhas inteiras
 -z, --null-data uma linha de dados termina com byte 0, e não com
 caractere de nova linha

Miscelânea:
 -s, --no-messages suprime mensagens de erro
 -v, --invert-match seleciona somente linhas não coincidentes
 -V, --version mostra informações sobre versão e sai
 --help exibe esta ajuda e sai

Controle de saída:
 -m, --max-count=NÚM interrompe depois de NÚM ocorrências
 -b, --byte-offset emite a posição em bytes na linha de saída
 -n, --line-number emite o número da linha na linha de saída
 --line-buffered libera a saída a cada linha
 -H, --with-filename emite o nome do arquivo para cada ocorrência
 -h, --no-filename inibe o nome de arquivo na saída
 --label=RÓTULO usa RÓTULO para identificar a entrada padrão
 -o, --only-matching mostra apenas a parte da linha que coincide com
 o PADRÃO
 -q, --quiet, --silent inibe todas as mensagens normais de saída
 --binary-files=TIPO assume que arquivos binários são TIPO
 TIPO pode ser \"binary\" (binário), \"text\" (texto),
 ou \"without-match\" (nunca coincide)
 -a, --text equivalente a --binary-files=text
 -I equivalente a --binary-files=without-match
 -d, --directories=AÇÃO como tratar diretórios;
 AÇÃO pode ser \"read\" (ler), \"recurse\" (recursivo),
 ou \"skip\" (ignorar)
 -D, --devices=AÇÃO como tratar dispositivos, FIFOs e soquetes;
 AÇÃO pode ser \"read\" (ler) ou \"skip\" (ignorar)
 -r, --recursive equivalente a --directories=recurse
 -R, --dereference-recursive similar, mas segue todas as ligações simbólicas
 --include=PADRÃO_ARQ busca apenas em arquivos que casam com PADRÃO_ARQ
 --exclude=PADRÃO_ARQ ignora arquivos e diretórios que casam com
 PADRÃO_ARQ
 --exclude-from=ARQUI ignora arquivos que casam com algum padrão escrito
 em ARQUIvo
 --exclude-dir=PADRÃO diretórios que casam com PADRÃO serão ignorados
 -L, --files-without-match emite os nomes somente dos ARQUIVOs que não casam
 com o padrão
 -l, --files-with-matches emite os nomes somente dos ARQUIVOs que casam com
 o padrão
 -c, --count emite a contagem de linhas por ARQUIVO que casam
 com o padrão
 -T, --initial-tab alinha por tabulação (se necessário)
 -Z, --null emite byte 0 depois do nome do ARQUIVO

Controle de contexto:
 -B, --before-context=NÚM emite NÚM linhas de contexto anteriores
 -A, --after-context=NÚM emite NÚM linhas de contexto posteriores
 -C, --context=NÚM emite NÚM linhas de contexto de saída
 -NÚM o mesmo que --context=NÚM
 --color[=QUANDO],
 --colour[=QUANDO] usa marcadores para destacar o texto coincidente;
 QUANDO pode ser "always" (sempre), "never"
 (nunca) ou "auto" (automático).
 -U, --binary não exclui caracteres CR no fim de linha (MSDOS/Windows)
 -u, --unix-byte-offsets relata posições como se não existissem CRs
 (MSDOS/Windows)

"egrep" significa "grep -E". "fgrep" significa "grep -F".
A invocação direta tanto por "egrep" como por "fgrep" está obsoleta.
Quando ARQUIVO for -, lê da entrada padrão. Se ARQUIVO não for informado, lê
. se fornecida a opção -r na linha de comando; senão, usa -. Se menos que dois
ARQUIVOs forem especificados, assume-se -h. O estado de saída é 0 se alguma
linha for encontrada; 1 em caso contrário; se ocorrer algum erro ou -q não foi
especificado, o estado de saída é 2.

Relate os problemas para: bug-grep@gnu.org
página de GNU grep: <http://www.gnu.org/software/grep/>
Ajuda geral sobre uso de software GNU: <http://www.gnu.org/gethelp/>

Deixe uma resposta