https://www.cnblogs.com/qianjinyan/p/10772540.html
taskkill是Windows命令行里终止指定程序“进程”的命令。
/f 表示强制终止
/im 表示指定的进程名称,例如“explor.exe"
/pid 表示指定的进程ID进程号
taskkill /f /im javaw.exe
taskkill /f /pid 3352
参考jenkins的部分代码,发现其使用了如下的工具包,经验证该工具获取的pid和windows任务管理器看到的也不一样,但是通过其关闭方法却可以关闭进程,还没弄清楚这个pid和任务管理器里面看到的pid有什么不同。
<dependency>
<groupId>org.jvnet.winp</groupId>
<artifactId>winp</artifactId>
<version>1.28</version>
</dependency>
if (File.pathSeparatorChar == ';' || OSUtil.osEnum == OSEnum.Windows ) {
WindowsProcessUtil.killRecursively(process, runJobId);
}
public static void killRecursively(Process process,Long runJobId) {
String logKey = "killAllChildProcess,runJobId=" + runJobId + ",";
WinProcess winProcess = new WinProcess(process);
int rootPid = winProcess.getPid();
LogUtil.info(logKey + "rootPid=" + rootPid);
if (rootPid < 1) {
LogUtil.error(logKey + "rootPid=" + rootPid + ",should not less than 1 ");
return;
}
winProcess.killRecursively();
}
网友评论