答案1
我常用的终止任何类型进程的方法是 PowerShell。它非常简单快捷,通配符支持意味着您不需要知道确切的进程名称,并且它可以与多个实例一起使用。您通常不必知道确切的文件路径。尽管 PowerShell 非常强大,但这个技巧非常简单,所以不要被吓倒。
警告:请小心谨慎!如果你杀死了所有设置为 name 的进程,*
那么我估计每个进程都会死掉!
打开 PowerShell(除非收到请求提升权限的错误消息,否则无需以管理员身份打开)。您可以通过从开始菜单中搜索“PowerShell”来打开它,或者转到开始 > 所有应用程序 > Windows PowerShell > Windows PowerShell(忽略以“x86”或“ISE”结尾的程序 - 它们的作用基本相同)
输入可执行文件的
Kill -name progam
名称program
。有很多种方法可以做到这一点 - 如果我不知道确切的名称,我会检查Details
任务管理器中的选项卡并找到可执行文件的名称。按下
Enter
即可运行该命令。
例子:
我打开了 3x 个命令提示符:
在任务管理器中显示为 cmd.exe
在 PowerShell 中输入命令:
按 Enter 键,然后所有正在运行的名为“cmd”的进程都将被终止。
对于您的情况,您只需输入即可kill -name slack
一次性杀死所有松弛进程。
允许使用通配符,*
以便终止所有 Dropbox 进程,我可以运行kill -name drop*
- 请注意,由于我没有从提升的 PowerShell 运行命令,因此有些进程由于权限问题无法终止。当然,只需以管理员身份打开 PowerShell 即可轻松解决此问题。
答案2
您可以从提升的命令提示符(以管理员身份运行 cmd)中使用 taskkill 执行此操作。
taskkill /F /IM [PROCESS EXE] /T
您需要知道确切的 .exe 文件名。为此,您只需右键单击其中一个 slack 进程,然后单击“打开文件位置”。以下是示例:
我通过右键单击任务管理器中的进程并单击“打开文件位置”来找到实际的 .exe (obs.exe 文件)
现在,从提升的命令提示符,如果我执行:
taskkill /F /IM obs64.exe /T
两个进程将同时被终止。我希望这能回答您的问题并适用于您的特定进程。
答案3
您可以使用不同的任务管理器 - 例如进程探索器。“树”视图允许查找父进程并终止它。这也会终止所有其他生成的子进程。
如果总是同一个二进制文件挂起,而您又不关心保存数据,则可以准备一个链接来针对该二进制文件激活 PSKILL 或 TASKKILL。将链接权限设置为“以管理员身份运行”,并为其提供 PIFMGR.DLL 中的爆炸图标 :-) - 然后每次单击雷管图标时,该进程及其所有子进程都会终止。
PSKILL/TASKKILL 是最后手段;如果可以的话,我宁愿使用 Process Explorer。
有时(这取决于进程及其正在执行的操作),发生的情况是父进程生成多个子进程来处理事务,而父进程则协调它们的操作。现在可能发生的情况是父进程需要执行某些任务(例如从命令和控制服务器获取状态)。如果程序编码得足够好,成功和失败都会得到处理,但可能发生的情况是子进程既不返回任何结果,又因为其连接无响应而卡住。由于缺乏确认,所有其他子进程都保持静止。程序没有被阻止,因为父母仍在使用窗口消息,并且它不会终止,因为要求这样做的消息被父进程拦截,而父进程等待子进程有序关闭——但这不会发生。
Process Explorer 还可以显示打开的句柄,包括某些类型的网络连接。有时,您可以从中推断出哪个子进程卡住了,并将其终止。然后父进程将收到错误,要么崩溃,要么通知错误并重试,要么停止,要么以其他方式继续其业务——这让我多次保存我的工作重新启动程序之前。
(像您描述的一样,一个经常挂起的过程是通过 VPN 隧道使用的 SQL 工具。一个非常长且复杂的查询会以某种方式导致连接子进程挂起,这通常发生在我经过长时间的创造性工作之后,在此期间我一次又一次地完善和优化某些查询,但过了一段时间后却忘记在每次尝试之前保存它)。