taskkill 不会杀死进程

Posted

技术标签:

【中文标题】taskkill 不会杀死进程【英文标题】:taskkill doesn't kill process 【发布时间】:2015-02-18 18:12:33 【问题描述】:

有时我会得到一个进程,如果我运行taskkill /im the_process.exe /f /t,那么它不会杀死它,因为: ERROR: The process with PID 6492 (child process of PID 5788) could not be terminated. Reason: There is no running instance of the task.

但是如果我打开任务管理器并单击结束进程,它就会消失。为什么任务管理器可以工作,而taskkill却不行?我需要能够以编程方式终止该进程,因此我需要找到一个能够成功终止该进程的 CLI 命令。

我已经用谷歌搜索了,但我还没有找到可行的解决方案。

【问题讨论】:

powershell kill -n the_process ? 纳达。 kill : Cannot find a process with the name "the_process.exe". Verify the process name and call the cmdlet again. At line:1 char:1 + kill -n the_process.exe + ~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (the_process.exe:String) [Stop-Process], ProcessCommandException + FullyQualifiedErrorId : NoProcessFoundForGivenName,Microsoft.PowerShell.Commands.StopProcessCommand 我也试过没有“.exe”。我也试过在最后加上一个星号。我还尝试以管理员身份运行 cmd 窗口。 你能透露更多关于这个过程的信息吗?您是否绝对确定此进程实际上正在运行? 所以打印出“没有正在运行的任务实例”[PID 为 6492] 的消息后,您还在任务管理器中看到 6492 吗?那将是一个错误。但如果它实际上不再列在任务管理器中,那么这只是一个竞争条件,PID 为 6492 的进程正在等待一个被终止的子进程,随后在taskkill 可以调用TerminateProcess 之前杀死自己。跨度> 这是 Windows 中存在多年的错误。如果您在正确的时间调用正确的内核函数,您将获得一个幻像进程。这种情况并不经常发生,但如果您管理数百台计算机,您每月至少会看到一次。这意味着普通用户可能每隔几年就会体验一次。 【参考方案1】:

另外,如果在 Visual Studio 下调试进程,你会得到这个确切的情况。您需要分离调试器或从调试器中终止进程。

【讨论】:

我刚遇到这个问题,正如你所说,我正在调试一些代码。关闭 VS 帮助了我。【参考方案2】:

我在用代码块编写软件时遇到了完全相同的问题。

结果是 Codeblocks 仍在调试它,我不得不按顶部菜单上的红色播放按钮 (F8) 才能继续。检查以确保没有其他程序链接到您的应用程序。

【讨论】:

您在调试应用程序时遇到了特定问题。这里的问题是操作系统问题。【参考方案3】:

这也适用于“Taskkill /f 不会杀死进程”。这些是“特殊情况”,但我怀疑其他人也像我一样操作 - 远程工作人员 RDPd 到现场桌面。这不会是每个人的解决方案,但到目前为止是我的,我认为值得分享。

我一直困扰着我的 Citrix 客户端被搞砸了,以至于我无法打开新会话;无法杀死 wfica32.exe 进程 - 拒绝访问或没有正在运行的任务实例。与任务列表。尝试了各种建议,但都没有奏效 - 总是以重启而告终,这当然很痛苦。

但我碰巧使用 /V 运行任务列表,而 RDP 就是线索 - 我只是断开了我正在运行的 RDP 会话并重新连接 - 所有 wfica 任务都消失了,我现在可以重新打开我的 Citrix 会话。

wfica32.exe                  63636 RDP-Tcp#16

【讨论】:

以上是关于taskkill 不会杀死进程的主要内容,如果未能解决你的问题,请参考以下文章

使用 taskkill 只杀死一个进程

text 任务杀死taskkill查找进程窗口

window下用taskkill杀死进程

在windows中使用管道和taskkill用pid杀死进程

windows环境 查看端口被哪个进程占用 并杀死进程 netstat/tasklist/taskkill

windows环境 查看端口被哪个进程占用 并杀死进程 netstat/tasklist/taskkill