问题是,当我们除了从运行对话框(windows + r 键)中的路径中的程序或批处理之外什么也做不了,并且性能如此糟糕以至于 taskMGR / procEXP / 其他带有可视化 GUI 的程序无法使用时,在拔掉电源插头之前,有哪些流程可以尝试从总体系统不稳定中恢复?
我不是 Windows 专家,但理想情况下有人编写了一个程序,可以做或多或少这样的事情:
立即将其优先级设置为极高(或者我可以从运行提示中设置),评估性能瓶颈。例如,CPU 是否 100%?如果是,则识别有问题的程序或问题。尝试/记录修复,然后提供粗略的反馈,询问用户其性能是否已稳定到足以中止,等待几秒钟,如果没有反馈则继续,等等。最后,如果程序决定无法恢复,则尝试执行任何“系统清理”,并最终向用户提供一系列哔哔声,或者您有什么,说“好吧,我放弃了,是时候拔掉插头了”。理想情况下,在可以时创建一个日志。
这种可怕的挂起是一种情况,在这种情况下,尝试一些东西,任何事,都比什么都不做要好 - 只要这件事是明智的 - 当另一种选择是切断电源协调时。
再说一遍,我不是 Windows 专家,所以也许存在一种我不知道的更优雅的“动手”方法。
答案1
taskkill 和 shutdown 是我的朋友:)
答案2
许多系统内部工具要么基于命令行,要么可以通过使用正确的开关从命令行而不是 GUI 使用,那里有一些实用程序可以控制或显示 Windows 几乎任何部分的统计信息。
答案3
我同意 GAThrawn 的观点,CLI 实用程序在这种情况下非常有用,但是,我想补充一点,一个大问题是引起系统的注意以便插话。为此,您需要一个程序已经具有高优先级,但不会消耗您的所有 CPU,因为它处于空闲状态,等待您告诉它系统出现问题并且它应该采取行动。
...类似这样的操作或多或少就是 Windows 本身对任务管理器所做的操作 - 您竖起三根手指,它就会唤醒任务管理器。您想要类似的东西,以便快速获得控制权,那么为什么不让任务管理器为您执行此操作呢?您需要做的就是让您的程序已经在运行,但等待您的输入开始执行,然后您使用任务管理器来引起系统注意并“切换到”目标“应用程序”。
编辑:哎呀;我刚注意到您说任务管理器需要很长时间(太长)才能引起注意。那么,您已经运行的程序需要不时地唤醒并查找长时间处于 100% CPU 利用率的程序。
我建议您通过让高优先级进程管理普通优先级进程来实现这一点,普通优先级进程会做一些高优先级进程可以见证的简单事情。一种方法是,普通优先级进程在启动时使用当前时间戳更新文件(类似 unix 的“touch”就可以正常工作)。高优先级进程可以每分钟唤醒一次,然后启动这个标准优先级进程。如果该进程无法在一秒钟内完成其工作,那么高优先级进程就会采取行动,执行您认为合适的任何补救工作。