【发布时间】: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 中存在多年的错误。如果您在正确的时间调用正确的内核函数,您将获得一个幻像进程。这种情况并不经常发生,但如果您管理数百台计算机,您每月至少会看到一次。这意味着普通用户可能每隔几年就会体验一次。