为什么当我运行命令时我的计算机仍然处于睡眠状态?

为什么当我运行命令时我的计算机仍然处于睡眠状态?

在 Windows 10 上cmd.exe,我输入format D: /P:3命令来格式化我的 1TB 外部磁盘。该过程开始运行,大约 10 分钟后,系统显示已完成 1%,然后我就离开了电脑。

30 分钟后,我的电脑发现我没有做任何事情,于是就进入睡眠状态,从而中断了格式化过程。

我很不高兴。

从那时起,我就用惯常的方法来让电脑保持清醒,然后再运行这个过程。但是,这在我脑海中引发了一个问题,这个问题在网上很难找到:

为什么 Windows(或任何操作系统)不能将打开的命令提示符应用程序中的 shell 中正在运行的进程识别为保持唤醒的正当理由?

观看视频可以让事物保持清醒,移动鼠标/在键盘上打字也可以让事物保持清醒…为什么不在用户打开的命令提示符应用程序中输入用户输入的命令呢?

是否有一些极好的逻辑来支持排除这一点的理由,或者这只是多年来通过继承而延续的另一个愚蠢的设计选择?

答案1

一般来说,如果某件事没有做,就假设它不是一个刻意的设计决定,但是缺乏。有时,这样的功能可能明确地被排除在设计之外,但更常见的情况是,它从一开始就没有进入“设计”——它可能在优先级列表中排得很靠后,可能只在走廊里讨论过然后就被丢弃了,或者根本没有被提起过。

不过,在这种情况下,“按设计”的功能的工作方式与您的帖子首先假设的不同 - 操作系统不会尝试将特定事物识别为视频播放,而是依赖于明确的信息源(直接用户输入或告诉它保持唤醒的程序)。

也就是说,程序通常必须告诉操作系统保持系统唤醒当某些特定操作正在发生时。例如,在 Windows 中,程序可以调用设置线程执行状态(),在 Linux 上,该程序采用“暂停抑制器”,在 Android 上,它使用“唤醒锁”。

对于未正确使用操作系统功能的应用程序,Linux 附带 CLI“包装器”工具,可在运行主应用程序之前执行此操作。例如,只要该程序正在wget运行gnome-session-inhibit wget,系统就不会挂起。(有点像“caffeinate”,但内联使用,而不是外部开/关切换。)

为什么用户不在用户打开的命令提示符应用程序中输入命令?

至于为什么 cmd.exe 和 powershell 中没有唤醒锁——我们所能做的就是猜测和推测,但最有可能的git log原因是,从外部区分想要完成特定操作(例如格式化、下载)的命令和不完成特定操作的命令(例如,如果你让一个打开的程序运行而它只是坐在那里)会有些困难。

图形应用程序也是如此——尽管两者都以相同的速率使用网络,但必须保持唤醒状态的游戏与可以毫无问题地暂停的电子邮件应用程序之间没有外部可见的区别;或者,尽管两者都是全屏的,但必须保持唤醒状态的视频播放器与可以暂停的图片查看器之间没有外部可见的区别。

我怀疑,这往往会导致误报,导致系统在需要时保持清醒。应该有暂停,而你的投诉只会被其他人对 Windows 增加电费的投诉所取代。

(这已经是 Windows 10 的一个问题,因为它的一个内部 Windows 更新服务偶尔会需要唤醒锁,并且忘记释放它,导致系统即使没有实际执行任何操作也永远不会进入睡眠状态。

但也要考虑功能的维护成本:使用显式唤醒锁仍然更容易解决这样的问题,因为修复只会影响损坏的特定程序 - 而如果操作系统有一些启发式方法来猜测或检测空闲/活动程序,任何修复某些程序检测的更改都可能会破坏对其他程序的检测。)

答案2

因为在任何时候,几十个甚至数百进程正在运行(尽管它们可能处于空闲状态)。通常,无法(可靠地)区分哪些进程应该保持 PC 唤醒。对于使用 PC 的人来说,这通常很容易 - 因为他们还有一条 PC 没有的信息:意图。他们知道他们为什么这样做。

因此,程序本身而不是操作系统负责抑制睡眠。视频、VoIP 电话、PowerPoint 幻灯片等等。基本系统工具(如format)可能没有跟上这一变化。

答案3

(A)第一个问题是:经过一段时间的空闲后,计算机进入睡眠状态。

这并不罕见。

Excel、Word 或任何可以运行的应用程序,所有进程肯定都在运行。发生的一切就是 Windows 进入暂停状态,暂停(停止)正在运行的应用程序或进程。(Zoom、You Tube、Video 除外)

当我暂停 Windows 时,我总是在 Windows 应用程序和 VMware(暂停正在运行的机器)中看到这种情况。

我在不使用计算机时(或在挂起定时器间隔内)以及电池电量不足时都遇到过这种情况。

Windows 暂停所有内容(除了几个值得注意的视频/音频例外)。

这种情况很正常。

(二)这里的另一个问题似乎是如何让计算机保持唤醒状态。

这是通过电源管理实现的。

如果您的电池状况良好,请将空闲时​​间设置为 1 或 2 小时以进入睡眠状态。

如果插入交流电,请将空闲时​​间设置为从不。

我使用阈值电池管理,保持计算机插入电源,将“挂起”设置为“从不”,并且它始终处于开启状态。

相关内容