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에 캡슐화되어야 합니다.

관련 정보