我有一个批处理文件,它运行一个Java进程。此批处理文件计划使用Windows任务计划程序在特定时间运行。计划任务时选择了以下选项“即使用户是否已记录就运行”。
我想在特定时间停止java进程。系统上有多个Java进程。因此我无法将taskkill
与/t /im (imagename)
一起使用。我尝试使用taskill /t /fi (window title)
停止。但是,此选项仅在为Java进程选择“仅在用户登录时运行”时才有效。就我而言,即使用户没有登录,也需要运行Java进程。
有人可以指导我如何停止Java进程吗?
答案 0 :(得分:0)
如果您可以修改该流程的来源:
添加一些线程,通过一些频率检查是否存在特定文件(如.needsuicide
)并暂停进程(如果存在),然后在您想要停止该过程时创建该文件(don&#39 ; t忘记在进程自杀之后删除该文件。)
如果您无法访问流程来源:
grep
匹配命令行参数的正在运行的java
进程列表,例如-jar "<name_of_desired_jar>"
(或任何虚拟参数,如omg_please_kill_me
),您可以在进程计划任务中指定),然后通过他的pid
。
组合方式,即您可以访问该流程的来源,但想要kill
,而不是要求它自行终止
在进程启动时,让他创建一个具有特定名称的空文件(如.kill_me_<pid-of-jvm-process>
,然后根据需要 - 查找该文件并按指定的pid
终止进程。