Wie erhalte ich die Kennung meines Java-Prozesses?
Ich weiß, dass es mehrere plattformabhängige Hacks gibt, aber ich würde eine allgemeinere Lösung vorziehen.
Wie erhalte ich die Kennung meines Java-Prozesses?
Ich weiß, dass es mehrere plattformabhängige Hacks gibt, aber ich würde eine allgemeinere Lösung vorziehen.
Es kommt darauf an, woher Sie die Informationen beziehen wollen.
Wenn Sie die Informationen über die Konsole abrufen möchten, können Sie den Befehl jps verwenden. Der Befehl gibt eine ähnliche Ausgabe wie der Unix-Befehl ps und wird mit dem JDK seit glaube ich 1.5 ausgeliefert
Wenn Sie vom Prozess aus suchen, ist die RuntimeMXBean (wie von Wouter Coekaerts erwähnt) wahrscheinlich die beste Wahl. Die Ausgabe von getName() unter Windows mit Sun JDK 1.6 u7 erfolgt in der Form [PROCESS_ID]@[MACHINE_NAME]. Sie könnten jedoch versuchen, jps auszuführen und das Ergebnis daraus zu parsen:
String jps = [JDK HOME] + "\\bin\\jps.exe";
Process p = Runtime.getRuntime().exec(jps);
Bei Ausführung ohne Optionen sollte die Ausgabe die Prozess-ID gefolgt vom Namen sein.
Basierend auf Ashwin Jayaprakashs réponse (+1) über den Apache 2.0 lizenziert SIGAR
Hier ist, wie ich es verwende, um nur die PID des aktuellen Prozesses zu erhalten:
import org.hyperic.sigar.Sigar;
Sigar sigar = new Sigar();
long pid = sigar.getPid();
sigar.close();
Auch wenn es nicht auf allen Plattformen funktioniert, so funktioniert es doch auf Linux, Windows, OS X und verschiedene Unix-Plattformen wie hier aufgeführt .
Ich weiß, dies ist ein alter Thread, aber ich wollte darauf hinweisen, dass die API zum Abrufen der PID (sowie andere Manipulationen des Java-Prozesses zur Laufzeit) der Klasse Process in JDK 9 hinzugefügt wird: http://openjdk.java.net/jeps/102
Ich habe eine Lösung gefunden, die vielleicht ein bisschen abwegig ist und ich habe sie nicht auf anderen Betriebssystemen als Windows 10 ausprobiert, aber ich denke, sie ist es wert, erwähnt zu werden.
Wenn Sie mit folgenden Themen arbeiten J2V8 und nodejs können Sie eine einfache Javascript-Funktion ausführen, die Ihnen die PID des Java-Prozesses zurückgibt.
Hier ist ein Beispiel:
public static void main(String[] args) {
NodeJS nodeJS = NodeJS.createNodeJS();
int pid = nodeJS.getRuntime().executeIntegerScript("process.pid;\n");
System.out.println(pid);
nodeJS.release();
}
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.