我正在寻找一些简单的任务,比如列出用户的所有正在运行的进程,或者通过pid等来杀死特定的进程.来自Java的基本unix进程管理.那里有一个相对成熟且有文件记录的图书馆吗?我可以从JVM运行一个外部命令,然后解析标准输出/错误,但这似乎很多工作,而且根本不健壮.有什么建议?
我认为您需要推出自己的解决方案。Process可以使用 来终止使用 API 创建的外部进程Process.destroy()。(但请注意,destroy()在 Linux / Unix 上实现的是“软”终止,而不是SIGKILL,因此外部进程可能能够避免被终止。)
除此之外的任何东西都是不可移植的。
/proc。Process。这取决于您的管理功能是否需要使用“纯”Java 程序无法使用的系统调用。如果您走 JNI + 本机库路线,请注意本机指针问题和本机线程问题可能会杀死您的 JVM。您可能还需要处理为多个架构等构建和分发本机库的问题。还要注意,对于不同的 JVM 平台、版本等,内部数据结构可能会有所不同,并且它们可能会在没有通知的情况下发生更改。