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.