it-swarm.com.de

Wie kann ich herausfinden, welche JAR-Dateien Java gerade ausgeführt werden (und deren PIDs)?

Ich habe eine .jar -Datei, die für Fehlfunktionen berüchtigt ist. Bei einer Störung hilft nur ein Neustart. Ich habe eine Möglichkeit, diese Fehlfunktionen zu erkennen (Lesen der Protokolldatei von .jar). Daher möchte ich ein Skript schreiben, das den Prozess abbricht, wenn die Fehlfunktion auftritt. Das Problem ist:

[email protected]:~$ ps -A
...
4438 ?        00:00:00 Java
4439 ?        00:00:00 Java
4443 ?        00:00:00 Java
...

Der Prozessname aller laufenden .jars ist natürlich "Java". Wie finde ich heraus, welcher dieser "Java" -Prozesse derjenige ist, den ich beenden möchte, d. H. Derjenige, der foobar.jar ausführt?

11
con-f-use

Sie können den Befehl lsof ausführen, der auflistet, welche Prozesse geöffnete Dateien haben, wobei Ihre JAR-Datei als Argument angegeben wird. Ein Beispiel zum Anzeigen einer Datei mit weniger:

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

Um die PID in einem Skript einfach wiederzuverwenden, können Sie sie im knappen Modus ausführen:

[email protected]:~$ lsof -t foo.c
18871
10
Egil

Die Verwendung von ps ax hilft.

Es zeigt den Prozessbaum in einem BSD-Stil an, der einfach mehr Informationen anzeigt.

Um Ihren speziellen Prozess zu finden, müssen Sie nur nach dem JAR-Namen suchen. ps ax | grep JARNAME wird es tun.

6

Sie können dies nativ tun oder wenn "lsof" nicht über/proc // fd installiert ist. Beispiel:

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
0x0C4