Aqui está a partida:
$ ps ax | grep 6557
6582 s003 S+ 0:00.01 grep 6557
^^^^ (found it!)
grep
está verificando tudo na linha, incluindo o comando e os argumentos, e 6557
é o argumento que você deu a grep
, então ele encontra seu próprio processo.
Um regex mais estrito pode corrigir esse caso específico: ^
indica o início da linha e \ \*
corresponde a qualquer número de espaços iniciais, portanto, isso só encontrará correspondências no início da linha:
$ ps ax | grep ^\ \*6557