2013-03-14 3 views
1

실행중인 모든 Java 프로세스를 유닉스 박스에서 찾으려고합니다. 나는 어떤 일이 올 바르고 정확한 차이점은 무엇입니까 ps -ef | grep java와 ps -ef | grep * .java의 차이점

ps –ef|grep *.java 

ps –ef|grep java 

사이

를 혼란 스러워요?

PS는 : 제 모두가 올바른지

출력 ps –ef|grep *.java

ps -ef | grep *.java 
aaassa1 7507 2304 0 11:49 pts/4 00:00:00 grep *.java 

답변

2

결과의 다른 세트를 리턴한다. 두 번째로, 쉘은 현재 작업 디렉토리를 기초로 *.java을 확장하여 재미있는 결과를 얻습니다.

정확히 그 결과가 무엇인지 ... 나는 후자를 효과적으로하고있다, 여기 추측하지만, 당신이 파일 foo.java하고 현재 디렉토리에 bar.java이 있으리라 믿고있어 :

ps -ef | grep bar.java foo.java 

어떤, 내가 생각을은 파이프로 연결된 입력을 무시하고 foo.java에서 bar.java를 검색합니다 (ps). 그러나 나를 인용하지 마십시오 - 요점은 그것이 당신이 원하는 것이 거의 확실합니다.

+0

ps -ef | grep * .java의 출력으로 질문을 업데이트했습니다. 이것으로부터 뭔가를 추론 할 수 있습니까? – hop

+0

나는 그것이 PS 입력을 무시하는 나의 대답의 후반 부분이 잘못되었음을 암시한다고 생각한다. 나는 그것을 제거 할 것이다. –

5

grep 그냥 텍스트 일치하지, 그것은 프로세스 이름 또는 파일 이름 등이 파이썬 스크립트 likejava.py라는있는 경우입니다

, 너무 결과에있을 것입니다의 생각이 없습니다.

grep은 glob 패턴이 아닌 regex와 함께 작동하기 때문에 *.java은 좋지 않습니다.

ps -ef|grep $(which java)이 자바 프로세스를 나열합니다,하지만 기본 자바 설치 :

당신은 시도 할 수 있습니다. 둘 이상의 Java가 설치된 경우 (예 : 귀하의 Jboss와 java7, 바람둥이와 java6, 그리고 Eclipse와 java5,이 실패합니다.

pgrep이라는 또 다른 도구가 있습니다. 시도해볼 수 있습니다.

pgrep -l java 

당신이 더 많은 정보를 얻을 수 man pgrep을 할 수있는 : 작은 PS를 추가

pgrep, pkill - look up or signal processes based on name and other attributes 

편집을 .. | 그렙 트릭

는 질문에 출력을 보았다 :

출력에 grep *.java이 있는데, 좋은 예입니다. grep *.java은 java 프로세스가 아니지만 "java"라는 텍스트가 있습니다. 그래서 거기에있다.

bash에서 ps...|grep [j]ava 작품으로 피할 수 있습니다.

관련 문제