$ ps ax | grep 6557
#=> 6582 s003 S+ 0:00.01 grep 6557
Но проверка быстро с монитором активности не происходит с pid 6557. И все онлайн говорит, что grep должен возвращать 0, когда нет совпадений.
Вот матч:
$ ps ax | grep 6557
6582 s003 S+ 0:00.01 grep 6557
^^^^ (found it!)
grep
проверяет все в строке, включая команду и аргументы, а 6557
- это аргумент, который вы дали grep
, поэтому он находит свой собственный процесс.
Более строгое регулярное выражение может исправить этот конкретный случай: ^
указывает начало строки, а \ \*
соответствует любому количеству начальных пробелов, так что совпадения будут найдены только в самом начале строки:
$ ps ax | grep ^\ \*6557