Come trovare l'ID di processo di un processo Java in esecuzione su Windows? E come uccidere il processo da solo?


Voglio uccidere il particolare processo Java in Windows, come in Linux (ps -aux per ottenere processid e poi kill processid per uccidere il processo).

Author: Evan Carroll, 2012-10-23

7 answers

È possibile utilizzare l'utilità jpsche è incluso nel JRE per trovare l'ID di processo di un processo Java. L'output mostrerà il nome del file JAR eseguibile o il nome della classe principale.

Quindi utilizzare il task manager di Windows per terminare il processo. Se vuoi farlo sulla riga di comando, usa

TASKKILL /PID %PID%
 30
Author: Ingo Kegel, 2012-10-23 08:02:12

È anche possibile trovare il PID di un programma java con il task manager. Si abilitano le colonne PID e della riga di comando View -> Select Columns e si è quindi in grado di trovare il processo corretto.

Il tuo risultato sarà qualcosa del genere : inserisci qui la descrizione dell'immagine

 13
Author: cete3, 2013-10-17 16:06:53

Dopo aver impostato il percorso del tuo jdk usa JPS.Poi Si può eaisly ucciderlo dal Task Manager
JPS vi darà tutti i processi java

 8
Author: khan, 2012-10-23 08:09:41

Questo funzionerà anche quando ci sono più istanze di jar in esecuzione

wmic Path win32_process Where "CommandLine Like '%yourname.jar%'" Call Terminate
 6
Author: Vinaykumar Patel, 2017-01-06 07:46:39

La soluzione che ho trovato è molto semplice. Usa il runtime WMIC e Java di Window per individuare e uccidere il processo.

Parte 1: Devi inserire una sorta di identificatore nella riga di comando di avvio della tua app. Ad esempio qualcosa come:

String id = "com.domain.app";

Parte 2: Quando esegui l'app, assicurati di includere la stringa. Diciamo che lo si avvia da Java, effettuare le seguenti operazioni:

Runtime.getRuntime().exec(
   "C:\...\javaw.exe -cp ... -Dwhatever=" + id + " com.domain.app.Main"
);

Parte 3: Per uccidere il processo, utilizzare WMIC di Window. Basta assicurarsi che app è stato avviato contenente il tuo ID da sopra:

Runtime.getRuntime().exec(
  "wmic process Where \"CommandLine Like '%" + id + "%'\" Call Terminate"
);
 2
Author: noblemaster, 2016-01-12 07:18:15

In Windows XP e versioni successive, c'è un comando: tasklist che elenca tutti gli ID di processo.

Per l'eliminazione di un processo in Windows, vedere:

Davvero uccidendo un processo in Windows / Stack Overflow

È possibile eseguire i comandi del sistema operativo in Java:

Runtime.getRuntime().exec("your command here");

Se è necessario gestire l'output di un comando, vedere l'esempio: utilizzando Runtime.exec () in Java

 1
Author: heikkim, 2018-03-02 21:31:37

Questo è specifico per Windows. Stavo affrontando lo stesso problema in cui devo uccidere uno specifico programma java usando taskkill. Quando eseguo il programma java, tasklist mostrava lo stesso programma con il nome dell'immagine impostato come java.exe. Ma ucciderlo usando taskkill /F java.exe fermerà tutte le altre applicazioni java diverse da quella prevista che non è richiesta.

Quindi eseguo lo stesso programma java usando:

start "MyProgramName" java java-program..

Qui il comando start aprirà una nuova finestra ed eseguirà il programma java con il set di titoli della finestra a MyProgramName.

Ora per uccidere questo java-programma utilizzare il seguente comando taskkill:

taskkill /fi "MyProgramName"

Il tuo programma Java verrà ucciso solo. Il riposo non sarà influenzato.

 0
Author: elite21, 2016-12-11 18:51:27