该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我利用sigar做了一个监控程序,用于监控机器硬件性能。
但是我只会用sigar获取服务器整体的CPU、内存使用率,
无法根据pid获取指定进程的资源信息。
在网上也找了一段时间,
感觉sigar应该是可以实现这个功能的,
只是我不知道该怎么写。
也找了一些代码,但运行的时候报了一个奇怪的异常,
一直无法解决,请你们帮我看看,
或者告诉我应该怎么写。
代码:
1.public static void getProCpu(String pro_name) throws SigarException {
2. Sigar sigar = new Sigar();
3. long[] pids = sigar.getProcList();
4. for (long pid : pids) {
5. ProcState prs = sigar.getProcState(pid);
6. ProcCpu pCpu = new ProcCpu();
7. pCpu.gather(sigar, pid);
8. System.out.println(prs.getName());
9. }
10. }
运行时异常:发生在第7行
Exception in thread "main" org.hyperic.sigar.SigarPermissionDeniedException: ???·???
at org.hyperic.sigar.ProcCpu.gather(Native Method)
at com.sunyard.equ.EquInfo.getProCpu(EquInfo.java:95)
at com.sunyard.equ.EquInfo.main(EquInfo.java:101)
我把sigar的源码反编译出来看了下,发现gather是一个native方法,实在没办法。。。