2012-09-20 8 views
5

Ho scaricato Sigar API (http://support.hyperic.com/display/SIGAR/Home) e vorrei utilizzarlo in un progetto per ottenere informazioni sui diversi processi in esecuzione.Sigar API per JAVA (necessita di una guida)

Il mio problema è che non riesco davvero a trovare alcuni frammenti di codice utili da cui imparare e javadoc dal loro sito Web non è di grande aiuto, perché non so cosa dovrei cercare.

Avete qualche idea in cui potrei trovare più informazioni?

+1

ho usato SIGAR prima, e l'ho trovato abbastanza facile. Puoi specificare esattamente quello che stai cercando? La pagina del documento PTQL si combina con il javadoc sembra un buon inizio per me. –

+0

Quindi, come punto di partenza, ho bisogno delle informazioni su proccessor/utilizzo della memoria per un determinato processo, come explorer.exe (esempio). – CosminO

+1

Questo è un po 'un tentativo, quindi non posterò questo come una risposta; Penso che tu faccia ProcMem pm = new ProcMem(); pm.gather (sigar, yourPid); pm.getsize(). Analogico per CPU con ProcTime. È possibile utilizzare ProcessFinder per trovare un pid da un'espressione PTQL. –

risposta

8

Per trovare pid (necessario per trovare informazioni su un determinato processo), è possibile utilizzare uno ProcessFinder. Il metodo per trovare un singolo processo pid è findSingleProcess(String expression). Esempio:

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

La sintassi delle espressioni è questo:

Class.Attribute.operator=value 

Dove:

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 

Maggiori informazioni qui: http://support.hyperic.com/display/SIGAR/PTQL

+1

Sto cercando di usare 'findSingleProcess (" Exe.Name.ct = explorer ");' come dici tu e sto ricevendo questo errore 'org.hyperic.sigar.SigarException: Query non corrisponde a nessun processo'. E il processo 'explorer.exe' è in esecuzione come posso vedere nel Task manager. – Alvaro

+0

quale sistema operativo stai utilizzando? – CosminO

+0

Sto usando Windows 7. – Alvaro

0

Nel loro ultimo pacchetto, danno un sacco di esempi di utilizzo sotto bindings\java\examples. Dategli un'occhiata

1

Se si utilizza Windows 7 prova a fare qualcosa

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