ps 결과에 'grep'이 표시되지 않도록 하려면 어떻게 해야 합니까?

ps 결과에 'grep'이 표시되지 않도록 하려면 어떻게 해야 합니까?

존재하지 않는 프로세스를 검색할 때, 예를 들어

$ ps aux | grep fnord                          
wayne    15745  0.0  0.0  13580   928 pts/6    S+   03:58   0:00 grep fnord

분명히 나는 ​​grep에 관심이 없습니다. 이는 프로세스를 검색하는 것만큼 의미가 있습니다 ps!

grep이 결과에 표시되지 않도록 하려면 어떻게 해야 합니까?

답변1

해결책이 발견되었습니다.열쇠고리.

$ ps aux | grep "[f]nord"

문자 주위에 대괄호를 넣고 문자열 주위에 따옴표를 넣으면 "문자 'f' 뒤에 'nord'가 오는 문자를 찾으세요."라는 정규식을 검색할 수 있습니다.

하지만 패턴 'f'에 대괄호를 넣었으므로 이제 ']'가 뒤에 오므로 grep결과 목록에 표시되지 않습니다. 니토!

답변2

내가 사용하는 또 다른 옵션(특히 프로세스가 실행 중인지 확인하기 위해)은 명령입니다 pgrep . 일치하는 프로세스를 검색하지만 검색에 대한 grep 행은 나열하지 않습니다. 나는 정규식을 사용하거나 어떤 것도 벗어나지 않고 검색할 수 있는 빠른 방법이기 때문에 그것을 좋아합니다.

pgrep fnord

또한 일치하는 프로세스 ID와 프로세스 이름을 모두 인쇄하려면 (감사합니다.페머)

pgrep -l fnord

답변3

이상적인 솔루션은 BriGuy가 제시한 솔루션입니다.

pgrep fnord 

하지만 그렇게 하고 싶지 않다면 다음과 일치하는 모든 줄을 제외하면 됩니다.grep와 함께:

ps aux | grep -v grep | grep "fnord"

답변4

zsh에서는 grep fnord =(ps aux).

아이디어는 먼저 실행하고 ps aux결과를 파일에 넣은 다음 grep해당 파일에서 사용하는 것입니다. 단, zsh의 "프로세스 대체"를 사용하므로 파일이 없습니다.

설명하려면 다음을 시도해 보세요.

ps aux > ps.txt
grep fnord ps.txt
rm ps.txt

결과는 동일해야 합니다.

일반 논평다른 답변 중 일부에 대해. 일부는 입력하기가 너무 복잡하거나 길다. 그것은 옳은 것의 문제일 뿐만 아니라, 사용 가능한 것이기도 해야 합니다. 그러나 이것이 이러한 솔루션 중 일부가 나쁘다는 것을 의미하지는 않습니다. 단, 사용할 수 있도록 하려면 미니 UI 내에 래핑되어야 합니다.

관련 정보