【问题标题】:What file access woke the sleeping disk in Windows?什么文件访问唤醒了 Windows 中的睡眠磁盘?
【发布时间】:2017-06-07 18:40:23
【问题描述】:

我的睡眠磁盘时不时地醒来,执行听起来像是单次读取的操作,然后一直处于空闲状态,直到它再次进入睡眠状态。有时我正在使用的程序在磁盘旋转时完全冻结大约 10 秒钟,即使该程序似乎不需要从该驱动器读取。

是否有用于在文件访问发生时监听文件访问或类似情况的 api,以便我可以弄清楚从该驱动器读取的内容,以便我可以移动它?如果不在 Windows 上,我可以在 Linux 上执行此操作吗?

这也适用于确定程序一般访问的文件/文件夹,所以我不会说它只适用于我非常狭窄的问题。

【问题讨论】:

  • “如果不在 Windows 上,我可以在 Linux 上执行此操作吗?” - 这需要澄清一下。您如何建议外国操作系统有助于诊断 Windows 内部?
  • 啊,我在想,因为许多程序和编程语言都可以在 Windows 和 Linux 上运行,所以在 Linux 上运行相同的程序可以让我知道它访问了哪些文件和文件夹。在 Windows 上找到这些相同的文件夹将是一项相当容易的任务,因为文件夹结构可能相似。
  • 编程语言的抽象层是语言运行时(例如 .NET CLR、CRT 等)。操作系统之间的实现差异很大,在不同系统上运行“相同”的应用程序具有完全不同的运行时特性。这不是一条有前途的路线。相反,请运行 Process Monitor 之类的工具来查看所有文件系统活动。
  • 虽然这个其他问题是特定于 C# 的,但我相信它本质上是重复的,因为答案是相同的:没有 API 可以从用户模式程序中捕获所有可能的访问.您必须编写文件系统驱动程序,这就是 Process Monitor 等工具完成工作的方式。 stackoverflow.com/questions/11417658/…

标签: windows monitoring file-monitoring filesystem-access


【解决方案1】:

有一个名为 What's My Computer Doing? 的简单工具,您可以使用它来快速了解导致计算机活动的原因。

安装并运行它,让它在后台运行。一旦您使用此工具来缩小导致磁盘活动的进程,您将需要一个更全面的工具。我使用来自 Sysinternals/Microsoft 的Process Monitor

一开始可能有点吓人,但这主要是因为它非常强大。它还可以改变计算机的行为。当它运行时,它会将收集到的大量数据备份到磁盘上。所以这就是为什么我建议使用“我的电脑在做什么?”先用工具。一旦您知道哪个进程正在生成磁盘访问,您就可以添加一个新的过滤规则(保留所有默认值,因为它们会屏蔽一堆正常的系统进程)并选择“进程名称”“是”“进程名称”,或选择“ PID" "is" "actual_PID"。

有很多教程 like this one 可以帮助您开始使用 Process Monitor。

【讨论】:

    猜你喜欢
    • 2012-10-08
    • 1970-01-01
    • 2014-07-29
    • 1970-01-01
    • 2021-01-20
    • 2018-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多