Java 프로세스 목록


113

bash에서 모든 Java 프로세스를 나열하려면 어떻게해야합니까? 명령 줄이 필요합니다. 명령이 있다는 것을 알고 ps있지만 어떤 매개 변수를 사용해야하는지 모르겠습니다.


1
이것을 조사하고 문제를 설명하는 데 더 많은 노력을 기울이십시오. 정확히 무엇을 추구하는지에 따라 많은 가능성이 있습니다.
Mat

3
당신이 알고 있다면 ps먼저 시도 man ps, info ps그리고 인터넷에 대해 배운다.
ssapkota 2011 년

답변:


148

시험:

ps aux | grep java

그리고 어떻게 타는 지 봐


109

최신 Java는 Java Virtual Machine 프로세스 상태 도구 "jps"와 함께 제공됩니다.

http://download.oracle.com/javase/1.5.0/docs/tooldocs/share/jps.html

예를 들면

[nsushkin@fulton support]$ jps -m
2120 Main --userdir /home/nsushkin/.netbeans/7.0 --branding nb
26546 charles.jar
17600 Jps -m

2
참고 : jps는 JRE가 아닌 JDK와 함께 제공됩니다. 일반 자바 런타임이있는 머신에는이 도구가 없습니다.
aguazales

실행중인 자바 프로세스의 수를 어떻게 얻을 수 있습니까?
Jet

50
jps -lV

가장 유용합니다. pid 및 정규화 된 기본 클래스 이름 만 인쇄합니다.

2472 com.intellij.idea.Main
11111 sun.tools.jps.Jps
9030 play.server.Server
2752 org.jetbrains.idea.maven.server.RemoteMavenServer

31

단일 명령 pgrep 도 사용할 수 있습니다 (파이프 및 여러 명령을 사용할 필요가 없음).

pgrep -fl java

27

Java 7부터 시작 하여 가장 간단하고 오류 발생 가능성이 적은 jcmd 것은 JDK의 일부인 명령 사용하여 모든 OS에서 동일한 방식으로 작동하도록하는 것입니다.

예:

> jcmd
5485 sun.tools.jcmd.JCmd
2125 MyProgram

jcmd 실행중인 JVM (Java Virtual Machine)에 진단 명령 요청을 보낼 수 있습니다.

사용 방법에jcmd 대한 자세한 내용 .

참조 유틸리티jcmd


1
와우, 더 나은 이상입니다jps
스리 Sarnobat


12

이것은 리눅스 환경에서 실행중인 모든 자바 프로세스를 반환합니다. 그런 다음 프로세스 ID를 사용하여 프로세스를 종료 할 수 있습니다.

ps -e|grep java


6

단순히 Java 프로세스를 나열하려면 다음을 사용하십시오.

ps -A | grep java

5
pgrep -l java
ps -ef | grep java

5
즉각적인 도움을 줄 수있는이 코드 스 니펫에 감사드립니다. 적절한 설명 이것이 문제에 대한 좋은 해결책 인 이유 를 보여줌으로써 교육적 가치를 크게 향상시키고 유사하지만 동일하지는 않은 질문을 가진 미래의 독자에게 더 유용하게 만들 것입니다. 제발 편집 설명을 추가하고, 제한 및 가정이 적용 무엇의 표시를 제공하는 답변을. 특히 두 번째는 왜 그 grep과정을 보여주지 않습니까?
Toby Speight

4
ps axuwww | grep java | grep -v grep

위는

  • 긴 줄이있는 모든 프로세스 표시 (인수 : www)
  • 필터 (grep)는 java라는 단어를 포함하는 행만
  • "grep java"줄 필터링 :)

(btw,이 예제는 효과적인 것은 아니지만 기억하기 쉽습니다);)

위를 다른 명령으로 파이프 할 수 있습니다. 예를 들면 다음과 같습니다.

ps axuwww | grep java | grep -v grep | sed '.....'  | while read something
do
    something_another $something
done

기타...


3

특정 Java 클래스가 실행되고 있는지 알고 싶을 때 다음 명령 줄을 사용합니다.

ps ww -f -C java | grep "fully.qualified.name.of.class"

OS 측보기에서 프로세스의 명령 이름은 "java"입니다. "ww"옵션은 열의 최대 문자를 넓히므로 관련 클래스의 FQN을 grep 할 수 있습니다.


이것이 제가 찾던 $ top것입니다. 어떤 프로세스가 CPU를 잡아 먹고 있는지 알아 내려고 할 때 그다지 도움이되지 않는 명령으로 "java"를 제공합니다. $ ps ww -fC java누락 된 퍼즐 조각을 제공합니다.
David Clarke

2

redhat linux에서 openjdk-1.8을 사용하여 시도했을 때 jps 및 jcmd가 결과를 표시하지 않았습니다. 하지만 그래도 내 경우에는 작동하지 않는 현재 사용자의 프로세스 만 표시합니다. ps | grep을 사용하는 것은 내가 한 일이지만 일부 Java 앱의 클래스 경로가 매우 길어 결과를 읽을 수 없으므로 sed를 사용하여 제거했습니다. 이것은 여전히 ​​약간 거칠지 만 PID, User, java-class / jar, args를 제외한 모든 것을 제거합니다.

ps -o pid,user,cmd -C java | sed -e 's/\([0-9]\+ *[^ ]*\) *[^ ]* *\([^$]*\)/\1 \2/' -e 's/-c[^ ]* [^ ]* \|-[^ ]* //g'

결과는 다음과 같습니다.

  PID USER     CMD
11251 userb org.apache.zookeeper.server.quorum.QuorumPeerMain ../config/zookeeper.properties
19574 userb com.intellij.idea.Main
28807 root org.apache.nifi.bootstrap.RunNiFi run
28829 root org.apache.nifi.NiFi

모든 프로세스를 나열하는 창에 대한 대안은 다음과 같습니다.

WMIC path win32_process where "Caption='java.exe'" get ProcessId,Commandline

그러나 더 읽기 쉽게 만들려면 파싱이 필요합니다.


1

이를 수행하는 방법에는 여러 가지가 있습니다. java.lang.ProcessBuilder및 "pgrep"을 사용 하여 다음과 같은 프로세스 ID (PID)를 얻을 수 있습니다 pgrep -fl java | awk {'print $1'}. 또는 Linux에서 실행중인 경우 /proc디렉터리를 쿼리 할 수 ​​있습니다 .

나는 이것이 끔찍하고 이식성이없고 제대로 구현되지 않은 것처럼 보입니다. 동의합니다. 그러나 Java는 실제로 VM에서 실행되기 때문에 JDK를 15 년 이상 작업 한 후에도 실제로 파악할 수없는 어리석은 이유 때문에 JVM 공간 외부에서 사물을 볼 수없는 이유입니다. 정말 우스꽝 스럽습니다. 그것에 대해 생각하십시오. 당신은, 다른 모든 것을 할 수 forkjoin자식 프로세스 (그 세계에 대해 알고하지 않은 경우 멀티 태스킹의 끔찍한 방법이었다 스레드 또는 pthreads의 지옥이! 무슨 일이 자바에에 무슨 일이 일어나고 있는지,?! :).

이것은 내가 아는 엄청난 토론을 줄 것이다, 그러나 어쨌든, 나는 이미 내 프로젝트에서 사용하는 아주 좋은 API가 그리고 그것은 안정 충분하다 ( 당신은 여전히 스트레스 테스트에 당신이 전에 정말 API를 신뢰 사용할 때마다 버전이 필요 그래서 OSS있어 ) : HTTPS : //github.com/jezhumble/javasysmon

JavaDoc : http://jezhumble.github.io/javasysmon/ , 클래스 검색 com.jezhumble.javasysmon.OsProcess, 그녀가 트릭을 수행합니다. 행운을 빕니다.


1
 ps -eaf | grep [j]ava

이 명령을 포함하지 않은 활성 프로세스 만 표시하므로 Java 문자열 []이있는 트릭 만 표시되므로 더 좋습니다.


ps -eaf이어야합니다. | 그렙 자바하지 [J] 아바
vaquar 칸

@vaquarkhan 친구는 모두 당신과 나의 제안을 실행하고 차이가 둘 다 작동합니다 뭐죠 보려고
일리아 Gazman을

모두 동일한 결과를주고 있지만 [J]를 에바 혼란
vaquar 칸

0

나는 이것을 사용한다 (데비안 8에서 좋다) : alias psj='ps --no-headers -ww -C java -o pid,user,start_time,command'


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.