E é por isso que você não deve grep
ou analisar a saída de ps
para os comandos correspondentes, mas use as ferramentas como pgrep
e pidof
.
Quando você executa ps | grep foo
, o processo grep foo
também é listado por ps
- portanto, grep foo
corresponde a si mesmo com qualquer outro foo
processos. A mesma coisa acontece quando você executa echo $(ps aux | awk '/firefox/...)
- o comando awk
corresponde a si mesmo.
De fato, dependendo da saída que você deseja de ps
, talvez seja melhor usar a saída de pgrep
com ps
. Por exemplo, os estados de todos os processos do Google Chrome no meu sistema:
ps -p $(pgrep -d, chrome) -o pid,state
A flexibilidade de pgrep
nesse sentido é muito útil - note como posso especificar um delimitador de saída com -d
e usá-lo como argumento de lista PID para ps
. pgrep
e pkill
também são capazes de ler de um arquivo PID.