risposta-alla-domanda-sullo-sviluppo-web-bd.com

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 terminare il processo).

23
Muthu Kumar

È possibile utilizzare l'utilità jps che è inclusa in 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
Ingo Kegel

È inoltre possibile trovare il PID di un programma Java con il task manager. Si abilitaPIDe Riga di comando colonne View -> Select Columns e sono quindi in grado di trovare il processo giusto.

Il tuo risultato sarà qualcosa del genere: enter image description here

13
cete3

Dopo aver impostato il percorso del tuo jdk usa JPS. Quindi puoi tranquillamente ucciderlo per Task Manager
JPS fornirà tutti i processi Java

9
khan

Funzionerà anche quando sono in esecuzione più istanze di jar

wmic Path win32_process Where "CommandLine Like '%yourname.jar%'" Call Terminate
6

La soluzione che ho trovato è molto semplice. Usa Window WMIC e Java Runtime per localizzare e uccidere il processo.

Parte 1: è necessario inserire una sorta di identificatore nella riga di comando di avvio dell'app. Per esempio. qualcosa di simile a:

String id = "com.domain.app";

Parte 2: quando esegui la tua app, assicurati di includere la stringa. Supponiamo che tu inizi da Java, fai quanto segue:

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

Parte 3: per terminare il processo, usa Window WMIC. Assicurati solo che l'app sia stata avviata contenente il tuo ID dall'alto:

Runtime.getRuntime().exec(
  "wmic process Where \"CommandLine Like '%" + id + "%'\" Call Terminate"
);
2
noblemaster

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

Per uccidere un processo in Windows, vedere:

Uccidendo davvero un processo in Windows | Overflow dello stack

È possibile eseguire comandi OS 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
heikkim

Questo è specifico per Windows . Stavo affrontando lo stesso problema in cui devo uccidere uno specifico programma Java utilizzando taskkill. Quando eseguo il programma Java, l'elenco delle attività mostrava lo stesso programma con il nome immagine impostato come Java.exe . Ma l'uccisione con taskkill /F Java.exe interromperà tutte le altre applicazioni Java diverse da quelle non richieste.

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 titolo della finestra impostato su MyProgramName.

Ora per uccidere questo programma Java usa il seguente comando taskkill:

taskkill /fi "MyProgramName"

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

0
elite21