2013-09-05 1 views
5

Desidero scrivere un'applicazione java che deve essere distribuita su una casella unix. Devo controllare i processi in esecuzione, che sono in esecuzione sulla scatola. Qualcuno potrebbe mostrarmi un esempio/indicarmi la giusta direzione?Controllare i processi in esecuzione - java

+0

java.lang.ProcessBuilder + ps – Keith

+2

Cosa intendi con "controllare i processi in esecuzione"? Di quali informazioni sui processi hai bisogno esattamente? – david

+0

Hai provato a cercare su google "Come controllare i processi in esecuzione linux" – Grammin

risposta

10

Se si desidera trovare i processi in esecuzione di Java, è possibile utilizzare

ps -ef | grep java

Se avete bisogno di controllare quali porte sono in uso,

netstat -tupln

1

mi sono imbattuto in alcuni alternative per ps aux | grep java fornite da Java che richiedono meno digitazioni:

jcmd 

e

jps -v 

L'opzione -v mostrerà gli argomenti passati alla JVM.

Se si ottengono informazioni sul processo non disponibili, ciò potrebbe essere dovuto al fatto che il processo è in esecuzione con OpenJDK. Se sei root e il processo è stato avviato con un utente non root è possibile utilizzare il seguente per vedere i dettagli (sostituire <user> con il nome utente):

sudo -u <user> jps -v 

Un'altra bella caratteristica di jcmd è che è possibile visualizzare la versione di Java che uno specifico processo utilizza (nel caso in cui ps aux | grep java non lo mostra), è così che mi sono imbattuto in due (sostituire <pid> con l'ID del processo):

jcmd <pid> VM.version