如何在 Java 或 Linux 上的 JRuby 中找到我的 PID?

2022-09-04 05:51:27

我需要在Linux平台上找到当前正在运行的进程的PID(它可以是一个依赖于系统的解决方案)。Java不支持获取进程ID,JRuby目前在Ruby方法Process.pid上有一个错误。

有没有另一种方法可以获得PID?


答案 1

如果您安装了procfs,则可以通过/proc/self符号链接找到进程ID,该链接指向名称为pid的目录(此处还有包含其他相关信息的文件,包括PID,但在这种情况下,目录就是您所需要的)。

因此,使用Java,您可以执行以下操作:

String pid = new File("/proc/self").getCanonicalFile().getName();

在JRuby中,你可以使用相同的解决方案:

pid = java.io.File.new("/proc/self").canonical_file.name

特别感谢免费节点上的#stackoverflow频道帮助我解决了这个问题!(特别是JerubgreghTopdeck)


答案 2

仅在 Linux 中使用 Sun JVM 进行了测试。可能无法与其他 JMX 实现一起使用。

String pid = ManagementFactory.getRuntimeMXBean().getName().split("@")[0];

推荐