terça-feira, 10 de agosto de 2010

Listar e matar processos de Java

Para listarmos os processos que estão executando em Java pelo nome do processo, usamos o comando JPS. Experimente no console digitar 'jps', exibirá a lista dos processos em java com o número do processo (PID) e o nome da Classe.

Abaixo crio uma classe que listará os processos ativos e pegaremos um determinado processo para finaliza-lo.

public void mataProcesso(){

try{
   //Executa comando que lista todos os processos ativos de java
   Process p = Runtime.getRuntime().exec("jps");

   //Ler lista de processos
   InputStream is = p.getInputStream();
   InputStreamReader readerInput = new InputStreamReader( is ) ;
   BufferedReader reader = new BufferedReader( readerInput ); 

   String linha = "";
   //Enquanto linha não for nula, exibe linha
   while ( ( linha = reader.readLine() ) != null ){

      //Se existir o processo abaixo, divide a String em 2, PID e NomeProcesso.
      //nomeDoProcesso é o nome do processo que  mataremos. 
      if ( linha.contains("nomeDoProcesso")){

      String[] getPID = linha.split(" ");
 
      System.out.println("PID: "+ getPID[0]);
      System.out.println("Process name: "+ getPID[1]);

      //Mata Processo pelo pid
      Runtime.getRuntime().exec("taskkill /f /pid "+getPID[0] );
      }
   }
}catch(Exception e){
   e.printStackTrace();
}

Um exemplo de saída dos processos (Meus processos ativos que estavam rodando no momento da execução) :

652 Jps
2164 jMentor
2444 Bootstrap
3428

Nenhum comentário:

Postar um comentário