从java管理unix进程的最佳方法是什么?

我正在寻找一些简单的任务,比如列出用户的所有正在运行的进程,或者通过pid等来杀死特定的进程.来自Java的基本unix进程管理.那里有一个相对成熟且有文件记录的图书馆吗?我可以从JVM运行一个外部命令,然后解析标准输出/错误,但这似乎很多工作,而且根本不健壮.有什么建议?
最佳答案
我想你需要推出自己的解决方案.使用Process.destroy()可以完成使用Process API创建的外部进程的杀死. (但请注意,在Linux / Unix上实现的destroy()执行“软”杀死,而不是SIGKILL,因此外部进程可能能够避免被杀死.)

除此之外的任何东西都是不便携的.

>可以通过读取/ proc文件系统来完成列出进程(在Linux机器上).
>通过使用Process调用本机命令可以完成其他任务.这取决于您的管理功能是否需要使用“纯”Java程序无法使用的系统调用.
>理论上可以使用JNI和本机代码在JVM的本机数据结构中进行挖掘,以找到进程的OS级PID并向其发送信号.

如果沿着JNI本机库路线走,请注意本机指针问题和本机线程问题可能会导致JVM死亡.您可能还需要处理为多种体系结构构建和分发本机库等.另外要注意,内部数据结构对于不同的JVM平台,版本等可能会有所不同,并且它们可能会更改,恕不另行通知.

转载注明原文:从java管理unix进程的最佳方法是什么? - 代码日志