windows 系统下如何杀死 Java 程序

如何通过命令行的方式杀死 Java 程序?我们将面临这样的问题:

  1. 如何找到 Java 程序?
  2. 如何杀死 Java 程序?

如果它像看起来这么简单的话,我想,这篇博文就没机会与大家见面了!


找到 Java 程序比较简单,windows 的 tasklist 命令:

takslist

杀死 Java 程序也很简单:taskkill /PID 12024

12024 为 tasklist 命令查询出来的进程 PID

但要杀死特定的 Java 程序呢?例如,启动了一个 tomcat,只想杀死这个 tomcat

首先想到的是通过映像名称(tasklist 命令查询到的第一列信息),可这个 tomcat 的映像名称仍然为 java.exe,原因很简单,本质上是通过 java 命令启动 JVM 实例运行程序,镜像名称都相同倒也正常。

网上有这样一个解法,拷贝 java.exe ,重新命名为你想要的镜像名称,然后使用这个新的 java.exe 程序来启动 tomcat ,这样就会得到想要的镜像名称。

自己思索了下,这种方法于我有些不便,每启动一个特定镜像名称的 Java 程序,需要复制一份新的文件(JDK文件夹下便会存在很多这样的文件),同时,也需要考虑什么时候删除这份文件。

处女座的程序开始较真了!

警告:以下内容请谨慎食用,劲别用过了!

查看 tasklist 的命令,发现可以使用 tasklist -V 获得比较特殊的一列数据:窗口标题。幸运的是窗口标题可以在启动程序时指定。

通过 start "title" java ... 来为运行的 Java 程序指定窗口标题。

所以查找特定进程可以结合管道使用如下命令: tasklist -V | findstr "title"

那么、杀死进程呢?命令行窗口很好解决,直接拷贝查询到的 PID。如果在批处理程序中呢?可以使用如下方式:

REM kill if specific Java  program already exists
for /F "usebackq tokens=1,2* delims= " %%i in (`tasklist -v ^| findstr "title"`) do 

echo kill PID=%%j
taskkill /PID %%j >& 2 
)

注意:这段脚本会杀死模糊匹配到的所有进程,所以这里有个建议,将窗口标题使用 ”唯一字符串“+”title“ 的方式,这样能够避免殃及无辜。

至此,问题分析完毕,解决完毕!


我与风来


如果你觉得我的文章对你有所帮助的话,欢迎关注我的公众号。赞!我与风来
认认真真学习,做思想的产出者,而不是文字的搬运工。错误之处,还望指出!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值