2012-09-20 38 views
5

Tôi đã tải xuống Sigar API (http://support.hyperic.com/display/SIGAR/Home) và muốn sử dụng nó trong một dự án để nhận thông tin về các quy trình khác nhau đang chạy.Sigar API cho JAVA (cần hướng dẫn)

Vấn đề của tôi là tôi thực sự không thể tìm thấy một số đoạn mã hữu ích để học hỏi và javadoc từ trang web của họ không giúp được gì nhiều, bởi vì tôi không biết mình nên tìm gì.

Bạn có bất kỳ ideea nào mà tôi có thể tìm thêm thông tin không?

+1

tôi đã sử dụng SIGAR trước đó, và thấy nó khá dễ dàng. Bạn có thể chỉ định chính xác những gì bạn đang tìm kiếm không? Trang tài liệu PTQL kết hợp với javadoc có vẻ là một khởi đầu khá tốt với tôi. –

+0

Vì vậy, như là một điểm khởi đầu, tôi cần thông tin về việc sử dụng bộ nhớ/bộ nhớ cho một quá trình nhất định, như explorer.exe (ví dụ). – CosminO

+1

Đây là một chút đoán, vì vậy tôi sẽ không đăng bài trả lời này; Tôi nghĩ bạn chỉ làm ProcMem pm = new ProcMem(); pm.gather (sigar, yourPid); pm.getsize(). Tương tự cho cpu với ProcTime. Bạn có thể sử dụng ProcessFinder để tìm một pid từ một biểu thức PTQL. –

Trả lời

8

Để tìm số pid (cần tìm thông tin về một quy trình nhất định), bạn có thể sử dụng ProcessFinder. Phương pháp tìm pid xử lý đơn là findSingleProcess(String expression). Ví dụ:

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())); 

Cú pháp biểu hiện là:

Class.Attribute.operator=value 

đâu:

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 

Thông tin thêm ở đây: http://support.hyperic.com/display/SIGAR/PTQL

+1

Tôi đang cố gắng sử dụng 'findSingleProcess (" Exe.Name.ct = explorer ");' như bạn nói và tôi nhận được lỗi này 'org.hyperic.sigar.SigarException: Truy vấn không khớp với bất kỳ quy trình' nào. Và quá trình 'explorer.exe' đang chạy như tôi thấy trong Trình quản lý tác vụ. – Alvaro

+0

bạn đang sử dụng hệ điều hành nào? – CosminO

+0

Tôi đang sử dụng Windows 7. – Alvaro

0

Trong gói mới nhất của họ, họ đưa ra rất nhiều ví dụ sử dụng theo bindings\java\examples. Kiểm tra chúng ra.

1

Nếu bạn đang sử dụng Windows 7 thử làm một cái gì đó

likefindSingleProcess("State.Name.ct=explorer");