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

时间:2020-03-06 14:46:09  来源:igfitidea点击:

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

还有另一种获取PID的方法吗?

解决方案

如果安装了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频道帮助我解决了这个问题! (特别是Jerub,gregh和Topdeck)

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

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