Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Windows上查找正在运行的Java进程的进程id?如何单独终止该过程?_Java_Windows_Process Management - Fatal编程技术网

如何在Windows上查找正在运行的Java进程的进程id?如何单独终止该过程?

如何在Windows上查找正在运行的Java进程的进程id?如何单独终止该过程?,java,windows,process-management,Java,Windows,Process Management,我想在Windows中终止特定的Java进程,就像在Linux中一样(ps-aux获取进程id,然后kill processid终止进程)。您可以使用jps实用程序来查找Java进程的进程id。输出将显示可执行JAR文件的名称或主类的名称 然后使用Windows任务管理器终止进程。如果要在命令行上执行此操作,请使用 TASKKILL /PID %PID% 设置jdk的路径后,请使用JPS。然后您可以通过任务管理器将其删除JPS将在windows XP和更高版本中为您提供所有java进程,其中有

我想在Windows中终止特定的Java进程,就像在Linux中一样(
ps-aux
获取进程id,然后
kill processid
终止进程)。

您可以使用
jps
实用程序来查找Java进程的进程id。输出将显示可执行JAR文件的名称或主类的名称

然后使用Windows任务管理器终止进程。如果要在命令行上执行此操作,请使用

TASKKILL /PID %PID%

设置jdk的路径后,请使用
JPS
。然后您可以通过任务管理器将其删除
JPS
将在windows XP和更高版本中为您提供所有java进程,其中有一个命令:tasklist列出所有进程id

有关在Windows中终止进程的信息,请参阅:

您可以通过以下方式在Java中执行OS命令:

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

如果需要处理命令的输出,请参见示例:

您还可以使用任务管理器找到java程序的PID。您可以启用PID命令行
视图->选择列
,然后可以找到正确的进程

您的结果如下所示:
这是Windows特有的。 我面临着同样的问题,我必须使用taskkill杀死一个特定的java程序。当我运行java程序时,tasklist显示的是同一个程序,图像名设置为java.exe。 但是使用
taskkill/F java.exe
杀死它将停止所有其他java应用程序,而不是预期的不需要的应用程序

因此,我使用以下方法运行相同的java程序:

start "MyProgramName" java java-program..
在这里,start命令将打开一个新窗口并运行java程序,窗口标题设置为MyProgramName

现在,要终止此java程序,请使用以下taskkill命令:

taskkill /fi "MyProgramName"

您的Java程序将仅被终止。其余部分将不受影响。

我找到的解决方案非常简单。使用Window的WMIC和Java的运行时来定位和终止进程

第1部分:您需要在应用程序的启动命令行中添加某种标识符。例如,类似于:

String id = "com.domain.app";
第2部分:运行应用程序时,请确保包含字符串。假设您从Java内部启动,请执行以下操作:

Runtime.getRuntime().exec(
   "C:\...\javaw.exe -cp ... -Dwhatever=" + id + " com.domain.app.Main"
);
第3部分:要终止进程,请使用Window的WMIC。只需确保您的应用程序已启动,并包含上面的id:

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

即使有多个jar实例正在运行,这也会起作用

wmic Path win32_process Where "CommandLine Like '%yourname.jar%'" Call Terminate
  • 打开GitBash
  • 键入
    ps-ef | grep java
  • 查找运行jdk的
    pid
  • kill-9[pid]

  • 检查以下[在此处输入链接描述][1][1]:如果您有任何歧义,请随时询问:)如果有帮助,请接受答案:)请查看您的Windows任务管理器窗口是德语的,但您的it显示完整答案:我们可能会在列表中找到java进程,然后我们会在
    命令行中找到它的PID号(在图片Befehlszeile中)我们看到完整的命令,它帮助我们区分要终止哪个java进程然后选择
    Select column
    选项。
    jps
    工具现在包含在JDK/bin目录中。我还建议使用
    -l
    选项,该选项输出应用程序主类的完整包名,这可能会有所帮助。jps不是Windows上的JRE 1.8的一部分,并且不允许在bund之外重新分发jps.exeled JDK-如果你像我一样有这样的想法:(-因此下面的WMIC解决方案是metaskkill的真正赢家不起作用:错误:无法识别搜索筛选器(关于它的一些信息)。但是感谢
    start“MyProgramName”
    taskkill/fi“WINDOWTITLE eq MyProgramName”工作正常。