web-dev-qa-db-fra.com

Comment trouver l'ID de processus d'un processus Java en cours d'exécution sous Windows? Et comment tuer le processus seul?

Je veux tuer le processus Java particulier dans Windows, comme dans Linux (ps -aux pour obtenir processid, puis kill processid pour tuer le processus).

23
Muthu Kumar

Vous pouvez utiliser l'utilitaire jps qui est inclus dans l'environnement JRE pour rechercher l'ID de processus d'un processus Java. La sortie vous montrera le nom du fichier JAR exécutable ou le nom de la classe principale.

Ensuite, utilisez le gestionnaire de tâches Windows pour terminer le processus. Si vous voulez le faire en ligne de commande, utilisez

TASKKILL /PID %PID%
30
Ingo Kegel

Vous pouvez également trouver le PID d'un programme Java avec le gestionnaire de tâches. Vous activez lesPIDet Ligne de commande columns View -> Select Columns et êtes ensuite en mesure de trouver le bon processus.

Votre résultat sera quelque chose comme ceci: enter image description here

13
cete3

Après avoir défini le chemin de votre jdk, utilisez JPS. Ensuite, vous pouvez le tuer par le gestionnaire de tâches.
JPS vous donnera tous les processus Java

9
khan

Cela fonctionnera même s'il y a plusieurs instances de jar en cours d'exécution

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

La solution que j'ai trouvée est très simple. Utilisez le runtime WMIC et Java de Window pour localiser et tuer le processus.

Partie 1: Vous devez insérer un identifiant dans la ligne de commande de démarrage de votre application. Par exemple. quelque chose comme:

String id = "com.domain.app";

Partie 2: lorsque vous exécutez votre application, veillez à inclure la chaîne. Disons que vous le démarrez à partir de Java, procédez comme suit:

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

Partie 3: Pour arrêter le processus, utilisez le code WMIC de Windows. Assurez-vous simplement que votre application a été lancée et qu'elle contient votre identifiant ci-dessus:

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

Dans Windows XP et les versions ultérieures, il existe une commande: tasklist qui répertorie tous les ID de processus.

Pour tuer un processus sous Windows, voir:

Tuer vraiment un processus dans Windows | Débordement de pile

Vous pouvez exécuter des commandes OS en Java en:

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

Si vous devez gérer le résultat d'une commande, consultez l'exemple: en utilisant Runtime.exec () en Java

1
heikkim

Ceci est spécifique à Windows . J'étais confronté au même problème dans le cadre duquel je devais tuer un programme Java spécifique à l'aide de taskkill. Lorsque j'exécutais le programme Java, Tasklist affichait le même programme avec le nom d'image défini en tant que Java.exe . Mais le supprimer à l'aide de taskkill /F Java.exe arrêtera toutes les applications Java autres que celles prévues ne qui ne sont pas requises.

Je lance donc le même programme Java en utilisant:

start "MyProgramName" Java java-program..

Cette commande de démarrage ouvrira une nouvelle fenêtre et exécutera le programme Java avec le titre de la fenêtre défini sur MyProgramName.

Maintenant, pour tuer ce programme Java, utilisez la commande taskkill suivante:

taskkill /fi "MyProgramName"

Votre programme Java sera tué seulement. Le repos ne sera pas affecté.

0
elite21