获取进程网络收发流量(字节)命令及批量终止超限进程求助
显示进程网络收发字节量的命令
netstat本身无法直接按进程统计收发字节,但可以结合Windows原生工具实现:
- 用PowerShell命令直接统计(推荐,精准且便捷):
Get-NetTCPConnection | Group-Object OwningProcess | ForEach-Object { $proc = Get-Process -Id $_.Name -ErrorAction SilentlyContinue if ($proc) { $adapterStats = Get-NetAdapterStatistics | Where-Object { $_.InterfaceDescription -match $proc.ProcessName } [PSCustomObject]@{ 进程名 = $proc.ProcessName PID = $proc.Id 发送字节 = $adapterStats.BytesSent 接收字节 = $adapterStats.BytesReceived 总流量 = $adapterStats.BytesSent + $adapterStats.BytesReceived } } } | Where-Object { $_.进程名 -ne $null } | Format-Table -AutoSize - 若坚持用
netstat,可执行netstat -ano列出所有连接的PID,再用tasklist /FI "PID eq [PID]"匹配进程名,但这种方式无法获取字节统计,仅能查看连接状态。
自动终止超阈值流量进程的批处理脚本
以下脚本通过PowerShell获取进程流量数据,判断是否超过设定阈值并终止进程(需管理员权限运行):
@echo off setlocal enabledelayedexpansion :: 设定流量阈值(单位:字节,示例为1GB=1073741824) set "THRESHOLD=1073741824" :: 执行流量检查与终止逻辑 powershell -Command "$threshold = %THRESHOLD%; Get-NetTCPConnection | Group-Object OwningProcess | ForEach-Object { $proc = Get-Process -Id $_.Name -ErrorAction SilentlyContinue; if ($proc) { $stats = Get-NetAdapterStatistics | Where-Object { $_.InterfaceDescription -match $proc.ProcessName }; if ($stats -and ($stats.BytesSent + $stats.BytesReceived) -gt $threshold) { Write-Host '终止进程:' $proc.ProcessName ' (PID:' $proc.Id ') 总流量:' ($stats.BytesSent + $stats.BytesReceived) '字节'; Stop-Process -Id $proc.Id -Force } } }" echo 流量检查与清理完成 pause
注意事项
- 必须以管理员身份运行脚本,否则无法终止系统级进程。
- 可修改
THRESHOLD的值调整阈值,例如500MB对应524288000字节。 - 如需针对特定进程过滤,可在PowerShell命令中添加
Where-Object { $proc.ProcessName -eq 'target.exe' }(替换target.exe为目标进程名)。
内容的提问来源于stack exchange,提问作者Davuud Qudratie
相关产品推荐
相关产品推荐

