$ ps ax | grep 6557
#=> 6582 s003  S+     0:00.01 grep 6557

Но проверка быстро с монитором активности не происходит с pid 6557. И все онлайн говорит, что grep должен возвращать 0, когда нет совпадений.

1 ответ1

6

Вот матч:

$ ps ax | grep 6557
6582 s003  S+     0:00.01 grep 6557
                               ^^^^ (found it!)

grep проверяет все в строке, включая команду и аргументы, а 6557 - это аргумент, который вы дали grep , поэтому он находит свой собственный процесс.

Более строгое регулярное выражение может исправить этот конкретный случай: ^ указывает начало строки, а \ \* соответствует любому количеству начальных пробелов, так что совпадения будут найдены только в самом начале строки:

$ ps ax | grep ^\ \*6557

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .