下载位置:https://github.com/eyjian/libmooon/tree/master/shell

#!/bin/bash
# 统计UPD丢包工具
# 可选参数1:统计间隔(单位:秒,默认10秒)
# 可选参数2:是否输出丢包为0的记录,注意有参数1时,参数2才会生效
#
# 运行结果会写日志,日志文件优先存工具相同的目录,
# 但如果没有权限,则选择当前目录,
# 当前目录无权限,则存tmp目录,
# 如果tmp目录还无权限,则报错退出。
#
# 输出格式:统计日期 统计时间 丢包数
# 输出示例:
# 2018-09-03 17:22:49 5
# 2018-09-03 17:22:51 3
#
# 可用UDP测试工具:https://iperf.fr/ flag=0
stat_seconds=10
if test $# -gt 2; then
echo "Usage: `basename $0` [seconds] [0|1]"
exit 1
fi
if test $# -gt 1; then
flag=$2 # 值为1表示输出丢包为0的记录
fi
if test $# -gt 0; then
stat_seconds=$1
fi # 下段不允许出错
set -e # 日志文件
basedir=$(dirname $(readlink -f $0))
logname=`basename $0 .sh`
logfile=$basedir/$logname.log
if test ! -w $basedir; then
basedir=`pwd`
logfile=$basedir/$logname if test ! -w $basedir; then
basedir=/tmp
logfile=$basedir/$logname
fi
fi # 备份日志文件
bak_logfile=$logfile.bak
if test -f $logfile; then
rm --interactive=never $logfile
touch $logfile
fi # 恢复
set +e # 统计哪些网卡,不填写则自动取
#ethX_array=()
#
#if test $# -eq 0; then
# ethX_array=(`cat /proc/net/dev| awk -F[\ \:]+ '/eth/{printf("%s\n",$2);}'`)
#else
# ethX_array=($*)
#fi old_num_errors=0
for ((;;))
do
# 相关命令:
# 1) 查看队列中的包数:netstat –alupt
# 2) 查看socket读缓冲区大小:cat /proc/sys/net/core/rmem_default
# 3) 查看socket读缓冲区大小:cat /proc/sys/net/core/wmem_default
# 4) 查看网卡队列大小:ethtool -g eth1
# 5) 查看arp缓存队列大小:cat /proc/sys/net/ipv4/neigh/eth1/unres_qlen
# 6) 查看CPU负载:mpstat -P ALL 1 或 vmstat 1 或 top 或 htop 或uptime
#
# 取得丢包数
# 命令“cat /proc/net/snmp | grep Udp”比命令“netstat –su”好
# num_drops=`netstat -su | awk -F[\ ]+ 'BEGIN{flag=0;}{ if ($0=="Udp:") flag=1; if ((flag==1) && (match($0, "packet receive errors"))) printf("%s\n", $2); }'`
num_errors=`cat /proc/net/snmp | awk -F'[ ]'+ 'BEGIN{ line=0; }/Udp/{ ++line; if (2==line) printf("%s\n", $4); }'` if test $old_num_errors -eq 0; then
old_num_errors=$num_errors
elif test $num_errors -ge $old_num_errors; then
num_drops=$(($num_errors - $old_num_errors)) if test $flag -eq 1 -o $num_drops -ne 0; then
line="`date '+%Y-%m-%d %H:%M:%S'` $num_drops" # 得到日志文件大小(5368709120 = 5 \* 1024 \* 1024 \* 1024)
logfile_size=`ls -l --time-style=long-iso $logfile 2>/dev/null| awk -F[\ ]+ '{ printf("%s\n", $5); }'`
if test ! -z "$logfile_size"; then
if test $logfile_size -gt 5368709120; then
echo $line | tee -a $logfile
mv $logfile $bak_logfile
rm -f $logfile
fi
fi echo $line | tee -a $logfile
fi
fi sleep $stat_seconds
done

统计UPD丢包工具的更多相关文章

  1. [转]网络性能评估工具Iperf详解(可测丢包率)

    原文链接:安全运维之:网络性能评估工具Iperf详解:http://os.51cto.com/art/201410/454889.htm 参考博文:http://linoxide.com/monito ...

  2. 定位公网丢包的工具 mtr

    1.使用mtr工具,可以显示从本机到目的ip之间的沿途路由器,从而可以确定丢包的位置. 2.windows 系统,可以使用winmtr工具.

  3. 使用Network Emulator Toolkit工具模拟网络丢包测试(上)

    弱网络测试包括延时和丢包二种场景下应用的功能是否正常: 网络延时测试使用Fiddler工具控制上下行数据传输延时时间来模拟网络延时场景: 网络丢包测试使用Network Emulator Toolki ...

  4. 使用Network Emulator Toolkit工具模拟网络丢包测试(下)

    用户会在各种网络环境下使用我们的App,PC应用,我们决不能祈求用户的网络环境都是稳定的,因此我们需要模拟出弱网络的情况,用来测试我们的APP在弱网络环境下的表现如何.Network Emulator ...

  5. ping 丢包或不通时链路测试说明【转】

    转自:https://help.aliyun.com/knowledge_detail/40573.html?spm=5176.2020520165.121.d157.4fe170291Qdp4l#W ...

  6. linux 系统 UDP 丢包问题分析思路

    转自:http://cizixs.com/2018/01/13/linux-udp-packet-drop-debug?hmsr=toutiao.io&utm_medium=toutiao.i ...

  7. 抓包工具tcpdump用法说明--2

    第一招: 通俗的说,tcpdump是一个抓包工具,用于抓取互联网上传输的数据包.形象的说,tcpdump就好比是国家海关,驻扎在出入境的咽喉要道,凡是要入境和出境的集装箱,海关人员总要打开箱子,看看里 ...

  8. 七种可能 | Linux丢包故障的定位与解决

    出处[云英公众号]:https://mp.weixin.qq.com/s?__biz=MzI1NzM3NTYxMw==&mid=2247483685&idx=1&sn=95c8 ...

  9. 浅谈UDP(数据包长度,收包能力,丢包及进程结构选择)

    UDP数据包长度 UDP数据包的理论长度 udp数据包的理论长度是多少,合适的udp数据包应该是多少呢?从TCP-IP详解卷一第11章的udp数据包的包头可以看出,udp的最大包长度是2^16-1的个 ...

随机推荐

  1. WorkerMan源码分析(resetStd方法,PHP中STDIN, STDOUT, STDERR的重定向)

    WorkerMan中work.php中 resetStd 方法中代码如下 public static function resetStd() { if (!static::$daemonize || ...

  2. jsplumb流程器使用3--connector

    jsPlumb.getInstance内可以放一个对象 对象内可选地提供默认值:  connector:  连接器(直线--a straight line,  贝塞尔曲线--a Bezier curv ...

  3. Vs2013 如何使用EF6来连接mysql数据库

    参考文章: 1.http://www.dotblogs.com.tw/yc421206/archive/2014/03/14/144395.aspx 参考了1,在VS中算是已经配置好了,在添加数据实体 ...

  4. jquery Jquery 遍历 获取设置 效果

    speed: slow fast 毫秒 隐藏 显示 $(selector).hide(speed,callback) 隐藏. $(selector).show(speed,callback) 显示 $ ...

  5. Oracle_SQL(2) 分组与聚合函数

    一.聚合函数1.定义:对表或视图的查询时,针对多行记录只返回一个值的函数.2.用途:用于select语句,HAVING条件二.5种聚合函数1.SUM(n) 对列求和 select sum(sal) f ...

  6. istio-jaeger-spring boot调用链配置

    istio-jaeger-spring boot调用链配置 虽然,istio ingress controller已经生成了jaeger 记录所需要的信息,但是多个分布式之间没法清晰记录相互之间的依赖 ...

  7. VS2013一次替换变量名

    插件下载地址:https://visualstudiogallery.msdn.microsoft.com/164904b2-3b47-417f-9b6b-fdd35757d194 该插件目前只支持: ...

  8. poj 2828(线段树 逆向思考) 插队是不好的行为

    http://poj.org/problem?id=2828 插队问题,n个人,下面n行每行a,b表示这个人插在第a个人的后面和这个人的编号为b,最后输出队伍的情况 涉及到节点的问题可以用到线段树,这 ...

  9. POJ3621或洛谷2868 [USACO07DEC]观光奶牛Sightseeing Cows

    一道\(0/1\)分数规划+负环 POJ原题链接 洛谷原题链接 显然是\(0/1\)分数规划问题. 二分答案,设二分值为\(mid\). 然后对二分进行判断,我们建立新图,没有点权,设当前有向边为\( ...

  10. linux学习第四天 (Linux就该这么学)2018年11月16日

    今天主要讲了 管道符,重写向与环境变量 输入输出重写向 标准输出重写向 (标准,覆盖,错误) > 将标准输出重写向到一个文件中 >> 追加到文件 2>错误输出重定向 2> ...