最后,使用Java 9+可以使用ProcessHandle:public static void main(String[] args) {
ProcessHandle.allProcesses()
.forEach(process -> System.out.println(processDetails(process)));}private static String processDetails(ProcessHandle process) {
return String.format("%8d %8s %10s %26s %-40s",
process.pid(),
text(process.parent().map(ProcessHandle::pid)),
text(process.info().user()),
text(process.info().startInstant()),
text(process.info().commandLine()));}private static String text(Optional> optional) {
return optional.map(Object::toString).orElse("-");}
产出:1 - root 2017-11-19T18:01:13.100Z /sbin/init ...
639 1325 www-data 2018-12-04T06:35:58.680Z /usr/sbin/apache2 -k start ...23082 11054
huguesm 2018-12-04T10:24:22.100Z /.../java ProcessListDemo