You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在原生CMD中实现每秒多次Ping?项目需高准确率服务器在线时长监控

在原生CMD中实现高频率、高准确率的服务器Ping监控方案

没问题,我来帮你实现原生CMD下的高频率Ping监控,兼顾准确率和合理性(完全符合你的非DDoS监控需求)。

首先,默认的ping -t命令是每秒发送一个包,要实现每秒多次Ping,我们可以用批处理脚本结合循环来实现,同时通过一些参数调整来保证监控的准确率。


基础版:高频率Ping+日志记录

这个脚本会持续发送Ping包,每次批量发送3个包,快速循环,同时把所有结果写入日志文件,方便后续统计在线时长:

@echo off
setlocal enabledelayedexpansion
set "target=your-server-ip-or-domain"  :: 替换成你的服务器IP或域名
set "timeout=1000"  :: 每个Ping包的超时时间(毫秒),内网可设500
set "logfile=server_ping_log.log"

echo 开始监控服务器 %target%,日志已保存到 %logfile%
echo 监控启动时间:%date% %time% >> %logfile%

:monitor_loop
    :: 每次发送3个Ping包,超时时间1秒
    ping -n 3 -w %timeout% %target% >> %logfile%
    :: 极短延迟,避免CPU占用过高(0秒延迟,仅跳过按键等待)
    timeout /t 0 /nobreak >nul
goto monitor_loop

参数说明:

  • -n 3:每次循环发送3个Ping包,配合快速循环实现每秒多次检测
  • -w 1000:设置每个包的超时时间为1秒,避免因网络延迟导致的等待拖慢监控频率
  • timeout /t 0:几乎无延迟的循环,同时防止脚本因按键中断,平衡频率和CPU占用

进阶版:带离线判断的高准确率监控

如果要进一步提高准确率,避免单次网络波动误判服务器离线,可以加入连续失败阈值逻辑——只有连续多次Ping失败才标记为离线,恢复时也会记录:

@echo off
setlocal enabledelayedexpansion
set "target=your-server-ip-or-domain"
set "timeout=500"  :: 内网环境建议缩短超时时间,提高响应速度
set "logfile=server_ping_monitor.log"
set "failure_threshold=3"  :: 连续失败3次才判定为离线
set "failure_count=0"

echo 开始监控服务器 %target%,日志已保存到 %logfile%
echo 监控启动时间:%date% %time% >> %logfile%

:monitor_loop
    :: 每次发送1个Ping包,快速检测
    ping -n 1 -w %timeout% %target% >nul
    if errorlevel 1 (
        :: Ping失败,计数加1
        set /a failure_count+=1
        if !failure_count! equ !failure_threshold! (
            echo [!date! !time!] 警告:服务器 %target% 已离线 >> %logfile%
        )
    ) else (
        :: Ping成功,重置失败计数
        if !failure_count! geq !failure_threshold! (
            echo [!date! !time!] 通知:服务器 %target% 已恢复在线 >> %logfile%
        )
        set "failure_count=0"
        echo [!date! !time!] 服务器 %target% 在线 >> %logfile%
    )
    :: 极短延迟,控制频率同时降低CPU占用
    timeout /t 0 /nobreak >nul
goto monitor_loop

准确率优化点:

  • 连续失败阈值:避免因临时丢包误判服务器离线,更符合真实监控场景
  • 缩短超时时间:内网环境下500毫秒足够,减少等待时间,提高监控实时性
  • 精准日志记录:每条状态都带时间戳,方便后续统计在线时长和故障时段

注意事项

  1. 频率合理性:不要完全移除timeout延迟,否则CPU占用会飙升,建议保持每秒3-5次Ping的频率,既满足监控需求,又不会对服务器或本地系统造成压力
  2. 日志管理:日志文件会持续增大,可定期手动清理,或者在脚本中加入日志分割逻辑(比如按天生成新日志)
  3. 权限问题:不需要管理员权限即可运行,CMD直接执行脚本就行

内容的提问来源于stack exchange,提问作者user9399794

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:35:00