【问题标题】:Kill Process in windows when the download speed drops [closed]下载速度下降时杀死Windows中的进程[关闭]
【发布时间】:2015-07-21 19:39:53
【问题描述】:

我正在寻找例如 powershell/cmd 中的代码,以在下载速度低于 5 mbps 时终止进程。

情况是我正在使用 VLC 媒体播放器进行直播。通常会发生广播中断或开始出现中断的情况。

解决办法就是重启。但我只有在有人抱怨无法连接时才会重新启动它。

我正在寻找一个脚本/代码来监控这个过程,并在下载速度低于某个水平或不一致时自动重新启动/终止它。

【问题讨论】:

    标签: javascript windows powershell batch-file networking


    【解决方案1】:

    暗示 VLC 从磁盘读取内容并且速度与其出站网络速度相匹配,您可以使用磁盘读取速度进程性能计数器测量 1 秒:

    @echo off
    setlocal enableDelayedExpansion
    
    set LIMIT=500000
    set PROCESS=VLC
    
    :LOOP
    set line=0
    for /f "delims=, tokens=2" %%a in ('typeperf -sc 1 "\Process(%PROCESS%)\IO Read Bytes/sec"') do (
        set /a line+=1
        if !line!==2 (
            set speed=%%a
            set speed=!speed:"=!
            for /f "delims=. tokens=1" %%b in ("!speed!") do set speed=%%b
            if !speed! LSS %LIMIT% (
                taskkill /f /im %PROCESS%.exe
                call RUN-VLC.bat
            )
        )
    )
    goto LOOP
    

    假设 5mbps 为 500kBps,则 LIMIT 相应地设置为 500000

    【讨论】:

    • 感谢您的回复,但这是网络活动而非 IO 活动。所以实际上没有任何东西被存储或写入光盘。如果可以使用网络适配器或某种方式执行此检查,那么它将起作用。但如果我查看任务管理器 VLC 没有 IO 活动只有网络。
    • 如果 VLC 是唯一使用网络带宽的进程,那么只需更改计数器名称,这很简单。
    • 计数器名称应该改成什么?而且 vlc 不是唯一使用带宽的应用程序,因此它应该是特定于应用程序的。
    • 没有特定于应用程序的网络计数器。要查看整个列表,请运行 typeperf -q
    • 上述逻辑的解决方法是在广播时将流存储在本地,并每 24 小时重新启动一次流以防止磁盘满。存储比特率时应与流式传输时相同。因此,在流期间,如果发生打嗝,它也应该停止录制,这意味着没有 IO 活动,这可能会导致杀戮......但这是我认为如果不能以其他方式覆盖它的唯一方法......跨度>
    猜你喜欢
    • 1970-01-01
    • 2018-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-13
    • 2015-02-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多