【问题标题】:Taskkill /f doesn't kill a processTaskkill /f 不会杀死进程
【发布时间】:2012-09-13 18:48:39
【问题描述】:

当我从 VS 启动 VS 的实验实例进行调试并停止调试(有时直接从父 VS)时,一个僵尸 devenv.exe 进程仍在运行,我无法杀死它。它保留了我的许多 dll。

当我以管理员身份登录到这台 64 位 Win7 机器时,我希望能够杀死任何我想杀死的进程。

I tried (from Administrator command prompt):

End Task from Task Manager.
TASKKILL /F /IM devenv.exe
PSKILL devenv.exe

None 返回任何错误,TASKKILLPSKILL 返回终止/终止进程的成功消息。但是 devenv.exe 仍然运行,它不会重新生成,因为 PID 保持不变。它只会在系统重新启动时消失,这不是一个很好的解决方案。

注意。 LockHunter 显示 devenv 已锁定自身。而且无法解锁。

上面的屏幕截图是 Process Monitor 的输出,显示 devenv 处于某种“进程分析”循环中(右键单击它并单击在新选项卡中打开图像以正确查看它)。

任何想法如何在 Windows 上终止这样的进程?

【问题讨论】:

  • 不知道为什么您没有收到错误,但要验证一件事:您是否从提升的命令提示符调用这些命令?否则,即使您的帐户拥有这些命令,这些命令也不会以管理员权限运行。 (这不应该让他们在明显失败时返回成功;))
  • 是的,所有命令都是从管理员命令提示符运行的。
  • 这种问题更适合superuser.com。是的,他们在那里有很好的解释。 This one 帮助了我。

标签: windows windows-7 process windows-7-x64 devenv


【解决方案1】:

如果有任何子进程成功杀死你的进程,你也必须杀死子进程

taskkill /IM "process_name" /T /F

/T = kills child process

/F = forceful termination of your process

【讨论】:

  • 在我的情况下它会打印两条成功消息,但该过程仍然存在。什么鬼?
  • 如果这很容易:) 不,它没有帮助。我认为他的问题是因为无法杀死的进程在某个循环(套接字、i/o、管道......)中,其中主进程是系统进程,杀死它会使系统不稳定。在这种情况下,我建议首先了解进程在哪个循环中。然后,如果该循环是与其他端点的网络交换,那么只需拔下网线或断开已经建立的连接。
  • 我得到一个There is no running instance of the task那个进程真的不想死!
  • 今天仍然帮助我,尽管我也必须杀死“孩子的孩子”:taskkill /f /T /PID 4172 ==> 错误:PID 4172 的进程(PID 的子进程4724) 无法终止。 ==> taskkill /f /T /PID 4724 ==> 完成
  • 下面提到的/T 切换是好的!
【解决方案2】:

taskkill 和 powershell (kill) 方法对我不起作用;它仍然显示“拒绝访问”。

我有更好的运气:

wmic process where "name='myprocessname.exe'" delete

【讨论】:

  • 错误:描述 = 无效查询
  • Windows-10。另外:ERROR: Description = Access denied(顺便说一句,使用管理控制台)
  • 谢谢!这对我卡住的 npm 来说就像一个魅力
  • 这个在我的情况下仍然不起作用。让 Visual Studio 卡在进程中,运行命令并显示删除实例 \\MyMachine\ROOT\CIMV2:Win32_Process.Handle="6420",实例删除成功。但 5 分钟后,我仍然在任务管理器列表中看到 VS devenv.exe 进程。我想只有重启是我唯一的解决方案。
  • 想要加上我的两分钱,并说这是另一个命令惨遭失败时对我真正有用的命令。谢谢。
【解决方案3】:

重启是唯一对我有用的解决方案(到目前为止)。

永远优秀的 Mark Russonovich 对不可杀死的进程有很好的解释。

总而言之,很可能是由于未正确处理的未处理 I/O 请求(由您的程序可能访问的设备驱动程序)

https://techcommunity.microsoft.com/t5/windows-blog-archive/unkillable-processes/ba-p/723389

【讨论】:

  • 我所做的是关闭它,然后重新启动它。
  • 对我来说,计算机无法重新启动,在重新启动 ... 屏幕上冻结,鼠标在移动。我可以等待 2 小时,然后我必须通过按钮手动将其关闭。
【解决方案4】:

刚刚在 Windows Server 2008 R2 上遇到了同样的问题,但没有任何帮助,无论是 taskmanager 还是 taskkill。但是,windows powershell 以管理员身份运行,使用“kill -id pid”

【讨论】:

  • 这对我有用......虽然在进程实际消失之前似乎有大约 30 秒的延迟,所以起初它似乎失败了。在我拥有的情况下,它是一个由另一个应用程序在系统资源不足时按程序创建的进程。进程资源管理器、终止进程树和其他几件事都失败了,但这成功了。
  • 对我不起作用,给我一个错误,无法杀死进程等
  • @rboy 。我知道它很旧,但以防万一其他人看到它做我所做的事情。以管理员身份打开powershell,然后运行。起初我不是以管理员身份运行它,它告诉我我做不到。然后我以管理员身份运行它,它工作了。
  • 这适用于我在 Windows 10 上使用行为不端的 Windows 服务。已经尝试过 CMD,在这种情况下 PowerShell 是正确的工具
  • 即使等待超过 2-3 分钟,我也没有运气。目前没有任何命令对我有用
【解决方案5】:

我知道已经晚了,但taskkill /im devenv.exe /t /f 应该可以。 /t 也会杀死子进程。

【讨论】:

  • 这似乎对我不起作用。它说它成功了,但过程仍然出现。
  • 我也遇到了类似的问题,但是使用 microsoft ftp 服务,说已终止但继续运行无法解决
  • 如果我使用/PID 17888 而不是/IM devenv.exe,那么错误基本上是说17888 是17880 的孩子,而17880 没有运行,所以不能被杀死。
  • 这可行,但请确保您在管理员模式下使用 cmd。
  • 对我不起作用,试图删除使用接近 100% 磁盘访问的 Windows Defender 进程..
【解决方案6】:

在我的情况下,经过几天的努力解决这个问题(它发生在 VirtualBox 和 µTorrent 进程上),我发现它是由网络驱动程序问题引起的,由 Windows 更新补丁 KB4338818 (Windows 7 x64) 引起.卸载该补丁后,一切恢复正常。我只是认为它可能对其他人有用。

【讨论】:

  • 您是如何发现是更新导致的?我想我永远不会发现这一点。 ^^'
  • 我意识到在问题变得明显之前我的机器中唯一改变的是更新,所以我检查了我的最后一次更新并阅读了发行说明。这似乎很可疑,我回滚看看问题是否已解决,确实如此。然后我在一些 Apache 论坛上看到,不记得是哪个,这个更新也给他们带来了麻烦。顺便说一句:截至 2018 年 8 月 10 日的最后一次 Windows 更新修复了 KB4338818 的问题,因此可以再次安装。
【解决方案7】:

我可以通过杀死 explorer.exe 来解决我的问题,而 explorer.exe 又沉迷于我想要杀死的进程。我想如果进程通过可能被锁定的钩子打开接口,也可能发生这种情况。

【讨论】:

  • 我尝试杀死并重新启动 explorer.exe,但没有成功。
  • 当我执行taskkill /IM "process_name" /T /F 时,部分响应是:(child process of PID xxxx) 所以我检查了 PID,它是 explorer.exe,重新启动它解决了我的问题。
【解决方案8】:

本机 tskill <pid>(或 tskill.exe <pid>)在 Windows 10 上为我工作,而其他本机答案没有。

在我的例子中,我有一些 chrome.exe 进程,任务管理器的“结束任务”正在运行,但 taskkill /F /T /PID <pid> 和 powershell 的 kill -id <pid> 都不起作用(即使两个 shell 都以管理员身份运行)。

这很奇怪,因为 taskkill 据称是 tskill 的更好的 api-and-does-more 版本。

在我的情况下,我使用 FOR /F "usebackq tokens=2 skip=2" %i IN (`TASKLIST /FI "IMAGENAME eq name_of_task.exe"`) DO tskill %i 杀死某个任务的所有实例

【讨论】:

  • 这对我有用,而其他人都没有。谢谢:D
  • 对我不起作用。收到End Process failed for 10576:Access is denied.
  • 对我来说也是如此。我无法理解,为什么? taskkill 应该与 tskill 相同[更好,在文档等中]。如果有人可以回答?
  • Windows 10好像没有tskill
  • 对我不起作用,试图删除使用接近 100% 磁盘访问的 Windows Defender 进程..
【解决方案9】:

我已经看过几次了,我唯一的解决方案是重新启动。

您可以尝试使用 PowerShell: 获取进程 devenv |杀死

但如果其他方法失败了,这可能也会失败。 :-(

【讨论】:

  • 遗憾的是!对我来说也是如此。你有没有得到任何解决方案?
  • 在 win10 上对我不起作用:PS D:\work\Projects\libtiff.net_bin-2.4.560.0> Get-Process NSPRip |杀死 PS D:\work\Projects\libtiff.net_bin-2.4.560.0> echo $? True PS D:\work\Projects\libtiff.net_bin-2.4.560.0> Get-Process NSPRip Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName ------- -- ---- ----- ----- ------ -- -- ------------ 0 0 56 20 0.00 41236 1 NSPRip
【解决方案10】:

我将在这里提出一些建议,因为我最近遇到了同样的问题,并且我在答案中尝试了所有可能的方法,但没有任何效果。我遇到了类似

的错误

错误:无法终止 PID 为 23908 的进程。 原因:没有正在运行的任务实例。

使用命令提示符。电源外壳也没有帮助。它只会执行命令而没有响应,进程仍在运行。

直到我决定删除相关的“.exe”文件。由于该文件处于活动状态,Windows 不允许删除,但在那个警告窗口中,它给了我阻止我想要杀死的任务的进程的名称。 我能够杀死原始任务,从而杀死错误的过程。

如果所有解决方案都不起作用,那绝对值得一试。

【讨论】:

  • 真的希望......删除命令不起作用......访问被拒绝(即使是管理员)
【解决方案11】:

我通过taskkill得到以下结果

>taskkill /im "MyApp.exe" /t /f
ERROR: The process with PID 32040 (child process of PID 54176) could not be terminated.
Reason: There is no running instance of the task.

>taskkill /pid 54176  /t /f
ERROR: The process "54176" not found.

对我有用的是sysinternal'spskill

>pskill.exe -t 32040

PsKill v1.15 - Terminates processes on local or remote systems
Copyright (C) 1999-2012  Mark Russinovich
Sysinternals - www.sysinternals.com

Process 32040 killed.

你可以从the sysinternal's live site得到pskill

【讨论】:

  • 对我不起作用。得到:Unable to kill process 10576: Access is denied.
  • 您可能需要从具有管理员权限的命令外壳执行此操作?
  • pskill64 在具有管理员权限的命令外壳上也对我不起作用。同样的错误“访问被拒绝。”
【解决方案12】:

某些exe文件依赖于某些服务,

所以你需要先找到相应的服务并停止。

【讨论】:

  • 关于如何解决这个问题的任何提示?在 taskmanager 上它没有显示任何与 devenv.exe 对应的服务现在我正在尝试重新创建问题,一旦完成,我将使用进程资源管理器来挖掘可能持有它的服务。
【解决方案13】:

关于 Java 进程,我在 VirtualBox 中也遇到了同样的问题。

在我的情况下,这是由于 Windows 更新补丁 KB4338818 (Windows 7 x64) 中的错误造成的。

我通过以下方式解决了这个问题:

  • 卸载 Windows Update 补丁 KB4338818
  • 安装 Windows 更新补丁 KB4338821

【讨论】:

    【解决方案14】:

    以管理员身份运行对我有用:

    1.在windows中搜索cmd

    2.右键cmd选择“以管理员身份运行”

    3.netstat -ano | findstr :8080

    4.taskkill/pid (your number) /F

    【讨论】:

    • 如果您收到错误消息,例如:'nestat' 不是内部或外部命令、可运行程序或批处理文件。您可能需要将命令作为 C:\Windows\system32\netstat.exe 运行,而不仅仅是 nestat
    【解决方案15】:

    对我来说,它的工作方式是我必须杀死父进程。找出父进程并杀死它

    taskkill /IM "parent_process_name.exe" /T /F
    

    【讨论】:

      【解决方案16】:

      就我而言,这里的解决方案都不起作用。我最终发现有问题的程序在尝试轮询 USB 音频接口时被冻结。所以我拔掉了我连接的 USB DAC,令我惊讶的是应用程序立即退出。 Francis 的回答提到这可能是“未正确处理的未处理 I/O 请求(由您的程序可能访问的设备驱动程序)”的结果,这可能解释了为什么会修复它。

      我想这确实取决于程序在冻结时所做的事情,但如果其他解决方案都不起作用,请尝试断开所有 USB 设备,看看是否其中一个可能是原因。

      【讨论】:

        【解决方案17】:

        如果taskkill /F /T /PID <pid> 不起作用。 尝试使用 Run as Administrator 打开提升的终端。

        在 Windows 菜单中搜索 cmd,然后右键单击 Run as Administrator, 然后再次运行该命令。这对我有用。

        【讨论】:

          【解决方案18】:

          我在 Code::Blocks 中使用 gdb 调试进程时遇到问题。 一旦它在意外进入源代码范围之外的指令时挂起(作为没有源代码或系统功能的库),您既不能从 Code::Blocks 也不能从任务管理器退出调试。

          我认为这是在 Code::Blocks 中实现 gdb 的错误,但也可能在 gdb 中;)

          我的解决方案:

          taskkill /F /IM process.exe /T

          这显示了父进程的PID。现在杀死父母:

          taskkill /PID yyyy

          两个都没有了。

          完成。

          【讨论】:

          • 父PID可能不存在。
          • 请指定 gdb 和 Code::Blocks 是什么 ;)
          • 警告:如果父进程是services.exe,那么杀死父进程可能会导致蓝屏
          【解决方案19】:

          NirSoft 的 NirCmd 为我完成了这项工作:

          nircmd killprocess "process name.exe"
          

          killprocess 手册页是 here

          【讨论】:

            【解决方案20】:

            我遇到了同样的问题,在另一个网站上找到了这个修复: powershell.exe“获取进程进程名|停止进程” 它对我有用,我在同一条船上我必须重新启动,/ T 不起作用。

            【讨论】:

              【解决方案21】:

              如果您下载免费的 sysinternals 套件,它有一个适用于以下类型任务的 pskill.exe 应用程序:pskill.exe "process_name" 即使不使用 -t 选项,它也适用于这些进程。

              【讨论】:

                【解决方案22】:

                我在提升的 powershell 上执行了以下操作:

                PS C:\Windows\system32> wmic.exe /interactive:off process where "name like `'java%'`" call terminate
                

                命令输出:

                Executing (\\SRV\ROOT\CIMV2:Win32_Process.Handle="3064")->terminate()
                Method execution successful.
                

                输出参数:

                instance of __PARAMETERS
                {ReturnValue = 0; };
                

                我得到了一些语法信息:https://community.spiceworks.com/topic/871561-wmic-error-like-invalid-alias-verb

                【讨论】:

                • 这确实有效,应该被接受。谢谢
                【解决方案23】:

                正如Francis 提到的一些进程由于

                而无法终止

                “未处理的 I/O 请求”

                根据我的经验,我正在处理错误的图形驱动程序,这会导致我的游戏崩溃并且无法关闭它,作为最后的手段,我禁用图形驱动程序这个过程终于消失了。

                如果您的应用程序正在等待来自 驱动程序资源,例如 wifi 或图形,请尝试在设备管理器禁用它们>,你需要深入挖掘才能看到他们被吊死的地方。

                当然不建议这样做,但有时你已经没有什么可失去的了。

                【讨论】:

                  【解决方案24】:

                  我遇到了同样的问题,正如这里的许多其他人所说,正常的 Kill 命令都不起作用。我的问题文件是远程桌面服务器上的用户从网络共享运行的可执行文件。在工作日重新启动多个共享用户并不是一件容易的事。即使用户注销,exe 仍然列在任务管理器中。我发送到共享文件夹的服务器,并从计算机管理 - > 会话中发现会话的用户仍然从该 RDP 服务器打开,即使他已注销。右键->关闭会话,文件锁被释放。

                  我为什么不能结束任务。当我尝试删除文件时,我最初收到的错误消息是“无法完成操作,因为文件已在系统中打开”

                  希望这对其他人有所帮助。

                  【讨论】:

                    【解决方案25】:

                    我遇到了同样的问题,我在端口 3000 中启动了一个节点应用程序,但它没有正确关闭,并且即使在重新启动后进程仍在运行。

                    在管理员模式下运行的 taskkill 或 powershell 命令都不适合我。

                    我使用了 MS Process Expoler > Properties > Image > Current directory(应该是我的项目目录)。

                    最后,我不得不在安全模式下重新启动并重命名项目文件夹并重新启动。消耗 3000 端口的 Node 进程自行终止。

                    【讨论】:

                      【解决方案26】:

                      taskkill /f /im "process.exe"

                      以管理员身份运行 cmd 或 .bat 文件为我工作

                      【讨论】:

                        【解决方案27】:

                        用于杀死windows中运行的PID任务:

                        TASKKILL  /PID "Taskname"  /F
                        

                        【讨论】:

                          【解决方案28】:

                          以管理员身份运行 CMD 将解决问题

                          【讨论】:

                          • 请详细说明以管理员身份运行 CMD 后的下一步操作。
                          【解决方案29】:
                          1. 打开任务管理器
                          2. 选择服务标签
                          3. 选择要杀死的进程(devenv.exe)并点击服务按钮
                          4. 就在进程中,选择属性并禁用它...

                          【讨论】:

                            猜你喜欢
                            • 2015-02-18
                            • 1970-01-01
                            • 2012-02-16
                            • 2014-12-17
                            • 2012-10-23
                            • 1970-01-01
                            • 2017-05-04
                            • 2016-01-24
                            • 2021-12-02
                            相关资源
                            最近更新 更多