V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tool2d
V2EX  ›  Windows

每次电脑熄屏,进入闲置状态时,硬盘都会狂写,今天终于被我抓了一个现场。

  •  1
     
  •   tool2d · 159 天前 · 2756 次点击
    这是一个创建于 159 天前的主题,其中的信息可能已经有所发展或是发生改变。
    问题是只要我一动鼠标,开启屏幕,硬盘读写症状就会完全消失。这时候打开任务管理器,也是看不到任何异常状态,就和躲猫猫一样。

    但是我非常好奇,究竟是哪一个进程干扰了正常休眠。借助 GPT 的能力,写了一个监控 BAT 脚本:

    :_start
    typeperf -qx Process | find "IO Read Bytes/sec" > iotest.txt
    typeperf -f CSV -o iotest.csv -si 5 -sc 5 -cf iotest.txt
    goto :_start

    抓过来一看,好嘛,竟然是 VS 的静默 Update 服务,所谓“静默”,就是你电脑必须完全闲置,它才会开始下载,这设计逻辑,我也是服。

    16 条回复    2023-11-25 10:47:01 +08:00
    xuanbg
        1
    xuanbg  
       159 天前   ❤️ 2
    windows 的更新从来都是在你不用电脑的时候进行的。不和你抢资源,你还觉得不好?
    aleimu
        2
    aleimu  
       159 天前
    还有 win 自己更新服务
    tool2d
        3
    tool2d  
    OP
       159 天前
    @xuanbg 主要是不知道哪个程序,我安装过 VS 后,很少打开,直接给忘了。

    直觉上猜测是微软后台搞的鬼,本来以为是磁盘文件读取到内存,建立后台高速缓存。没想到是万年不用的 VS 。
    EVANGELIONAir
        4
    EVANGELIONAir  
       159 天前
    我不懂,和 op 说的类似的情况,比如磁盘碎片整理 trim 日志维护.net 缓存等一堆任务都是不应该存在于地球上的?
    tool2d
        5
    tool2d  
    OP
       159 天前
    @EVANGELIONAir 你说的这些后台任务都是可预见的,我烦的是偷偷下载,你至少要给一个提示吧?

    或者说,我已经好几个月没打开过 VS 了,但是更新任务几乎每隔几天就有。
    EVANGELIONAir
        6
    EVANGELIONAir  
       159 天前
    @tool2d 这按钮都让你自己选了还叫偷偷下载啊?更何况 VS 从 17 开始的更新都是在 installer 问你要不要更新的
    tool2d
        7
    tool2d  
    OP
       159 天前
    @EVANGELIONAir 我说了几个月没打开过 vs ,压根就没想到是 vs 的后台。

    不抓取系统日志,估计永远都找不出这个内鬼。

    我认为正常的更新流程,至少你要启动一下主程序,而不是安装完后,永远在后台静默下载。
    wanmyj
        8
    wanmyj  
       159 天前
    虽然微软罪大恶极,用户怨声载道,但感觉 Op 应该多了解一下 Service 的概念。。。
    tool2d
        9
    tool2d  
    OP
       159 天前
    @wanmyj 这个不是 service ,是一个叫 BackgroundDownload.exe 独立程序,由隐藏很深的 Task Scheduler 所触发,触发条件竟然是 when computer is idle 。
    xmt328
        10
    xmt328  
       158 天前
    @tool2d #9 这个隐藏不深啊,很多定时任务都是靠这个启动的
    tool2d
        11
    tool2d  
    OP
       158 天前
    @xmt328 也可能我对 task scheduler 不熟悉,不知道怎么列出所有 task 。

    只能按照树状结构,一个个点进去。隐藏深是指目录结构比较深。
    ktyang
        12
    ktyang  
       158 天前
    公司电脑一闲置 CPU 、硬盘和散热风扇就起飞,借脚本抓抓看~到底是公司的监控还是巨硬让电脑待机比使用功耗还高~
    SHF
        13
    SHF  
       158 天前
    提个问题,有什么方法可以列出所有 "when computer is idle" 情况下自动运行的任务?我也不想有我不知道的任务偷偷运行。
    hez2010
        14
    hez2010  
       158 天前
    @tool2d @SHF 打开 PowerShell ,执行:
    Get-ScheduledTask | ? { ($_.Triggers | % { $_.CimClass.CimClassName }) -contains "MSFT_TaskIdleTrigger" }
    就能列出来所有的 "when computer is idle" 任务。
    hez2010
        15
    hez2010  
       158 天前   ❤️ 2
    @hez2010 不过这样会把已经禁用的 Task (即不会执行)一并列出来。
    如果只想列出来有效的 Task 的话,可以执行这个:
    Get-ScheduledTask | ? { ($_.Triggers | % { $_.CimClass.CimClassName }) -contains "MSFT_TaskIdleTrigger" -and $_.State -ne "Disabled" }
    SHF
        16
    SHF  
       157 天前
    @hez2010 #15 非常感谢,很好用,禁用了一堆垃圾

    D:/> Get-ScheduledTask | ? { ($_.Triggers | % { $_.CimClass.CimClassName }) -contains "MSFT_TaskIdleTrigger" -and $_.State -ne "Disabled" }

    TaskPath TaskName State
    -------- -------- -----
    \ RNIdle Task Ready
    \Microsoft\Office\ Office Automatic Updates 2.0 Ready
    \Microsoft\VisualStudio\Updates\ BackgroundDownload Ready
    \Microsoft\XblGameSave\ XblGameSaveTask Ready
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   874 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 21:03 · PVG 05:03 · LAX 14:03 · JFK 17:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.