Ich habe eine .jar
Datei, die für Störungen berüchtigt ist. Bei einer Störung hilft nur ein Neustart. Ich habe eine Möglichkeit, diese Fehlfunktionen zu erkennen (Lesen der besagten Protokolldatei .jar
). Also möchte ich ein Skript schreiben, das den Prozess abbricht, wenn die Fehlfunktion auftritt. Das Problem ist:
confus@confusion:~$ ps -A
...
4438 ? 00:00:00 java
4439 ? 00:00:00 java
4443 ? 00:00:00 java
...
Der Prozessname aller laufenden .jar
s ist natürlich "java". Wie finde ich heraus, welcher dieser "Java" -Prozesse derjenige ist, den ich beenden möchte, dh derjenige, der ausgeführt wird foobar.jar
?
Antworten:
Sie können den
lsof
Befehl ausführen , der auflistet, welche Prozesse Dateien geöffnet haben, wobei Ihre JAR-Datei als Argument angegeben wird. Ein Beispiel zum Anzeigen einer Datei mit weniger:Um die PID in einem Skript einfach wiederzuverwenden, können Sie sie im knappen Modus ausführen:
quelle
Verwenden
ps ax
wird helfen.Es zeigt den Prozessbaum in einem BSD-Stil an, der einfach viel mehr Informationen anzeigt.
Um Ihren speziellen Prozess zu finden, müssen Sie nur nach dem JAR-Namen suchen.
ps ax | grep JARNAME
werde es tun.quelle
Sie können dies nativ tun oder wenn "lsof" nicht über / proc // fd installiert ist. Beispiel:
quelle
Sie können
jps
mit den-l
Optionen arbeiten, die die JAR-Datei zurückgeben, die mit dem vollständigen Pfad verwendet wird.quelle