Quando procuro algum processo que não existe, por exemplo
$ ps aux | grep fnord
wayne 15745 0.0 0.0 13580 928 pts/6 S+ 03:58 0:00 grep fnord
Obviamente não me importo com o grep - isso faz tanto sentido quanto procurar o ps
processo!
Como posso evitar que o grep apareça nos resultados?
Responder1
Acontece que há uma solução encontrada emchaveiro.
$ ps aux | grep "[f]nord"
Colocando colchetes ao redor da letra e aspas ao redor da string, você procura pela regex, que diz: "Encontre o caractere 'f' seguido de 'nord'."
Mas como você colocou os colchetes no padrão, 'f' agora é seguido por ']', então grep
não aparecerá na lista de resultados. Legal!
Responder2
Outra opção que uso (especialmente apenas para verificar se um processo está em execução) é o pgrep
comando. Isso procurará um processo correspondente, mas não listará uma linha grep para a pesquisa. Gosto porque é uma forma rápida de busca, sem regex ou escape de nada.
pgrep fnord
Além disso, para imprimir o ID do processo e o nome do processo que está sendo correspondido, use (obrigadofenômeno)
pgrep -l fnord
Responder3
A solução ideal é a apresentada pela BriGuy
pgrep fnord
Mas se você não quiser fazer isso, basta excluir todas as linhas que correspondam agrepcom:
ps aux | grep -v grep | grep "fnord"
Responder4
Em zsh, grep fnord =(ps aux)
.
A ideia é, primeiro executar ps aux
, colocar o resultado em um arquivo e depois usar grep
nesse arquivo. Só que não temos um arquivo, pois usamos a "substituição de processo" do zsh.
Para ilustrar, tente
ps aux > ps.txt
grep fnord ps.txt
rm ps.txt
O resultado deve ser o mesmo.
Comentário geralem algumas das outras respostas. Alguns são muito complicados e/ou longos para digitar. Não é apenas uma questão de estar certo, mas também de ser utilizável. Mas isso não significa que algumas dessas soluções sejam ruins; apenas, eles devem ser agrupados em uma mini-UI para torná-los utilizáveis.