如何获取生成的java进程的PID

我正在编写几个java程序,在完成我想做的任何事情后,需要在单独的JVM中终止/清理。 为此,我需要获取我正在创建的java进程的PID。

jps -l适用于Windows和Unix。 您可以使用Runtime.getRuntime().exec从java程序中调用此命令。 jps -l样本输出如下

 9412 foo.bar.ClassName 9300 sun.tools.jps.Jps 

您可能需要解析此问题,然后检查完​​全限定名称,然后从相应的行获取pid。

 private static void executeJps() throws IOException { Process p = Runtime.getRuntime().exec("jps -l"); String line = null; BufferedReader in = new BufferedReader(new InputStreamReader( p.getInputStream(), "UTF-8")); while ((line = in.readLine()) != null) { String [] javaProcess = line.split(" "); if (javaProcess.length > 1 && javaProcess[1].endsWith("ClassName")) { System.out.println("pid => " + javaProcess[0]); System.out.println("Fully Qualified Class Name => " + javaProcess[1]); } } } 

你可以尝试执行命令

pidof

为你找到你的程序的pid。

它在Linux环境中。

请注意,Java 9将公开一些与系统无关的方法,例如:

 System.out.println("Your pid is " + Process.getCurrentPid());