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

发布于 2024-12-11 00:05:25 字数 82 浏览 0 评论 0原文

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

I am writing several java programs and will need to kill off/clean up in a seperate JVM after I am done with whatever I wanted to do. For this, I will need to get the PID of the java process which I am creating.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

带上头具痛哭 2024-12-18 00:05:25

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]);
        }
    }
}

jps -l works both on Windows and Unix. You can invoke this command from your java program using Runtime.getRuntime().exec. Sample output of jps -l is as follows

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

You might need to parse this and then check for the fully qualified name and then get the pid from the corresponding line.

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]);
        }
    }
}
薄暮涼年 2024-12-18 00:05:25

您可以尝试执行命令

pidof

来查找您的程序的pid。

它是在 Linux 环境中。

you can try execute command

pidof <program name>

for you to find the pid of your program.

It is in Linux env.

情话难免假 2024-12-18 00:05:25

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

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

Note that Java 9 is going to expose some system-agnostic methods such as:

System.out.println("Your pid is " + Process.getCurrentPid());
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文