java가 현재 실행중인 jar 파일 (및 PID)을 어떻게 알 수 있습니까?


12

나는이 .jar고장 악명이 파일을. 오작동이 발생하면 재시작 만 도움이됩니다. 그 오작동을 감지하는 방법이 있습니다 (said의 로그 파일 읽기 .jar) 그래서 오작동이 발생할 때마다 프로세스를 종료시키는 스크립트를 작성하고 싶습니다. 문제는:

confus@confusion:~$ ps -A
...
4438 ?        00:00:00 java
4439 ?        00:00:00 java
4443 ?        00:00:00 java
...

모든 실행중인 프로세스 이름 .jar은 자연스럽게 "java"입니다. 이 "java"프로세스 중 내가 죽이고 싶은 프로세스, 즉 실행중인 프로세스를 어떻게 알 수 foobar.jar있습니까?


동일한 사용자로 실행하는 경우 예를 들어 visualvm을 사용하여 연결하고 종료하기 전에이를 검사 할 수 있습니다.
Thorbjørn Ravn Andersen

답변:


11

lsofjar 파일을 인수로 사용하여 열려있는 파일이있는 프로세스를 나열하는 명령을 실행할 수 있습니다 . 적은 파일을 보는 예제 :

egil@mutter:~$ lsof foo.c
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
less    18871 egil    4r   REG    8,2        0 53862540 foo.c
egil@mutter:~$

스크립트에서 pid를 쉽게 재사용하기 위해 간결한 모드에서 실행할 수 있습니다.

egil@mutter:~$ lsof -t foo.c
18871

이 답변이 더 좋습니다. +1.
Octavian A. Damiean

7

사용 ps ax하는 데 도움이됩니다.

프로세스 트리를 BSD 스타일로 표시하여 더 많은 정보를 보여줍니다.

특정 프로세스를 찾으려면 JAR 이름을 grep하면됩니다. ps ax | grep JARNAME할 것입니다.


1

/ proc // fd를 통해 "lsof"가 설치되지 않은 경우 또는이 고유를 수행 할 수 있습니다. 예 :

ps -ef|grep -w java
...
0c4       6917  6916  0 12:22 pts/7    00:00:00 java
...

ls -la /proc/6917/fd/
total 0
dr-x------ 2 0c4 svauser  0 Apr  2 12:23 .
dr-xr-xr-x 9 0c4 svauser  0 Apr  2 12:22 ..
lrwx------ 1 0c4 svauser 64 Apr  2 12:23 0 -> /dev/pts/7
lrwx------ 1 0c4 svauser 64 Apr  2 12:23 1 -> /dev/pts/7
lrwx------ 1 0c4 svauser 64 Apr  2 12:23 2 -> /dev/pts/7
lr-x------ 1 0c4 svauser 64 Apr  2 12:23 3 -> /opt/jdk1.8.0_191/jre/lib/rt.jar
lr-x------ 1 0c4 svauser 64 Apr  2 12:23 4 -> /media/veracrypt1/Downloads/rr/testone.jar
lr-x------ 1 0c4 svauser 64 Apr  2 12:23 5 -> /usr/share/java/gnu-getopt-1.0.14.jar

0

전체 경로와 함께 사용되는 .jar 파일을 반환 jps하는 -l옵션 과 함께 사용할 수 있습니다 .

-l 응용 프로그램 기본 클래스의 전체 패키지 이름 또는 응용 프로그램 JAR 파일의 전체 경로 이름을 표시합니다.


질문이있을 때 사용 가능한 Java 런타임에 jps가 없습니다. 현재 사용 가능한 제품으로 제공됩니다.
Thorbjørn Ravn Andersen

나는 자바 SE 6 문서에 그것을 볼 수 있습니다 docs.oracle.com/javase/6/docs/technotes/tools/share/jps.html , 나는 여기에서 볼 수 있듯이이 2006 년 12 월부터입니다 : en.wikipedia.org/ wiki / Java_version_history # Java_SE_7
froblesmartin
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.