我已经下载了 Sigar API ( http://support.hyperic.com/display/SIGAR/Home ),并希望在项目中使用它来获取有关正在运行的不同进程的信息。
我的问题是我真的找不到一些有用的代码片段来学习,而且他们网站上的 javadoc 也没有多大帮助,因为我不知道我应该寻找什么。
你有什么想法我可以找到更多信息吗?
我已经下载了 Sigar API ( http://support.hyperic.com/display/SIGAR/Home ),并希望在项目中使用它来获取有关正在运行的不同进程的信息。
我的问题是我真的找不到一些有用的代码片段来学习,而且他们网站上的 javadoc 也没有多大帮助,因为我不知道我应该寻找什么。
你有什么想法我可以找到更多信息吗?
要查找pid
(查找有关某个进程的信息所需要的),您可以使用ProcessFinder
. 查找单个进程 pid 的方法是findSingleProcess(String expression)
. 例子:
Sigar sigar=new Sigar();
ProcessFinder find=new ProcessFinder(sigar);
long pid=find.findSingleProcess("Exe.Name.ct=explorer");
ProcMem memory=new ProcMem();
memory.gather(sigar, pid);
System.out.println(Long.toString(memory.getSize()));
表达式语法是这样的:
Class.Attribute.operator=value
在哪里:
Class is the name of the Sigar class minus the Proc prefix.
Attribute is an attribute of the given Class, index into an array or key in a Map class.
operator is one of the following for String values:
eq - Equal to value
ne - Not Equal to value
ew - Ends with value
sw - Starts with value
ct - Contains value (substring)
re - Regular expression value matches
operator is one of the following for numeric values:
eq - Equal to value
ne - Not Equal to value
gt - Greater than value
ge - Greater than or equal value
lt - Less than value
le - Less than or equal value
更多信息在这里:http: //support.hyperic.com/display/SIGAR/PTQL
如果您使用的是 Windows 7,请尝试做一些事情
likefindSingleProcess("State.Name.ct=explorer");
在他们最新的包中,他们在bindings\java\examples
. 去看一下。
hyperic 站点似乎消失了,但是这个https://layer4.fr/blog/2016/10/10/os-monitoring-with-java/告诉您如何将 Sigar 连接到 Java。您确实需要将 sigar-amd64-winnt.dll 文件放在 DLL 路径的某个位置(例如 C:\Windows)