2012-09-20 13 views
5

Pobrałem Sigar API (http://support.hyperic.com/display/SIGAR/Home) i chciałbym go użyć w projekcie, aby uzyskać informacje o różnych procesach, które są uruchomione.Sigar API dla JAVA (potrzebujesz przewodnika)

Moim problemem jest to, że naprawdę nie mogę znaleźć przydatnych fragmentów kodu do nauki, a javadoc z ich strony internetowej nie jest zbyt pomocny, ponieważ nie wiem, czego powinienem szukać.

Czy masz jakieś idee, gdzie mogę znaleźć więcej informacji?

+1

użyłem sigar przed i okazało się, że dość łatwo. Czy możesz dokładnie określić, czego szukasz? Strona dokumentu PTQL w połączeniu z javadoc wydaje mi się całkiem dobrym początkiem. –

+0

Tak więc, jako punkt wyjścia, potrzebuję informacji o wykorzystaniu procesora/pamięci dla określonego procesu, takiego jak explorer.exe (przykład). – CosminO

+1

To trochę przypuszczenie, więc nie będę zamieszczać tego jako odpowiedzi; Myślę, że po prostu robisz ProcMem pm = new ProcMem(); pm.gather (sigar, yourPid); pm.getsize(). Analogowy dla procesora z ProcTime. Możesz użyć ProcessFinder, aby znaleźć pid z wyrażenia PTQL. –

Odpowiedz

8

Aby znaleźć numer pid (potrzebny do uzyskania informacji o określonym procesie), można użyć numeru ProcessFinder. Metoda wyszukiwania pojedynczego pidu procesu to findSingleProcess(String expression). Przykład:

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

Składnia wyrażenie to:

Class.Attribute.operator=value 

Gdzie:

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 

Więcej informacji tutaj: http://support.hyperic.com/display/SIGAR/PTQL

+1

Próbuję użyć 'findSingleProcess (" Exe.Name.ct = explorer ");' jak mówisz i otrzymuję ten błąd 'org.hyperic.sigar.SigarException: Query nie pasuje do żadnego z procesów'. A proces 'explorer.exe' działa, jak widzę w Menedżerze zadań. – Alvaro

+0

jakiego systemu operacyjnego używasz? – CosminO

+0

Używam systemu Windows 7. – Alvaro

0

W swoim najnowszym pakietem, dają dużo przykłady użycia pod numerem bindings\java\examples. Sprawdź je.

1

Jeśli używasz Windows 7 próbować robić coś

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