热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux查看实时网卡流量的几种方式

在工作中,我们经常需要查看服务器的实时网卡流量。通常,我们会通过这几种方式查看Linux服务器的实时网卡流量。1.sar-nDEV12sar命令包含在s

在工作中,我们经常需要查看服务器的实时网卡流量。通常,我们会通过这几种方式查看Linux服务器的实时网卡流量。

1. sar -n DEV 1 2

sar命令包含在sysstat工具包中,提供系统的众多统计数据。其在不同的系统上命令有些差异,某些系统提供的sar支持基于网络接口的数据统计,也可以查看设备上每秒收发包的个数和流量。

sar –n DEV 1 2

命令后面1 2 意思是:每一秒钟取1次值,取2次。

DEV显示网络接口信息

另外,-n参数很有用,他有6个不同的开关:DEV | EDEV | NFS | NFSD | SOCK | ALL ,其代表的含义如下:

  • DEV显示网络接口信息。
  • EDEV显示关于网络错误的统计数据。
  • NFS统计活动的NFS客户端的信息。
  • NFSD统计NFS服务器的信息
  • SOCK显示套接字信息
  • ALL显示所有5个开关
  1. [sre@CDVM-213017031 ~]$ sar -n DEV 1 2
  2. Linux 2.6.32-431.el6.x86_64 (CDVM-213017031) 05/04/2017 _x86_64_ (4 CPU)
  3. 08:05:30 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
  4. 08:05:31 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
  5. 08:05:31 PM eth0 1788.00 1923.00 930.47 335.60 0.00 0.00 0.00
  6. 08:05:31 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
  7. 08:05:32 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
  8. 08:05:32 PM eth0 1387.00 1469.00 652.12 256.98 0.00 0.00 0.00
  9. Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
  10. Average: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
  11. Average: eth0 1587.50 1696.00 791.29 296.29 0.00 0.00 0.00

参数说明:

  • IFACE:LAN接口
  • rxpck/s:每秒钟接收的数据包
  • txpck/s:每秒钟发送的数据包
  • rxbyt/s:每秒钟接收的字节数
  • txbyt/s:每秒钟发送的字节数
  • rxcmp/s:每秒钟接收的压缩数据包
  • txcmp/s:每秒钟发送的压缩数据包
  • rxmcst/s:每秒钟接收的多播数据包
  • rxerr/s:每秒钟接收的坏数据包
  • txerr/s:每秒钟发送的坏数据包
  • coll/s:每秒冲突数
  • rxdrop/s:因为缓冲充满,每秒钟丢弃的已接收数据包数
  • txdrop/s:因为缓冲充满,每秒钟丢弃的已发送数据包数
  • txcarr/s:发送数据包时,每秒载波错误数
  • rxfram/s:每秒接收数据包的帧对齐错误数
  • rxfifo/s:接收的数据包每秒FIFO过速的错误数
  • txfifo/s:发送的数据包每秒FIFO过速的错误数

这种方式简单,直观,推荐使用。

2.实时监控脚本

  1. #!/bin/bash
  2. ethn=$1
  3. while true
  4. do
  5. RX_pre=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $2}')
  6. TX_pre=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $10}')
  7. sleep 1
  8. RX_next=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $2}')
  9. TX_next=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $10}')
  10. clear
  11. echo -e "\t RX `date +%k:%M:%S` TX"
  12. RX=$((${RX_next}-${RX_pre}))
  13. TX=$((${TX_next}-${TX_pre}))
  14. if [[ $RX -lt 1024 ]];then
  15. RX="${RX}B/s"
  16. elif [[ $RX -gt 1048576 ]];then
  17. RX=$(echo $RX | awk '{print $1/1048576 "MB/s"}')
  18. else
  19. RX=$(echo $RX | awk '{print $1/1024 "KB/s"}')
  20. fi
  21. if [[ $TX -lt 1024 ]];then
  22. TX="${TX}B/s"
  23. elif [[ $TX -gt 1048576 ]];then
  24. TX=$(echo $TX | awk '{print $1/1048576 "MB/s"}')
  25. else
  26. TX=$(echo $TX | awk '{print $1/1024 "KB/s"}')
  27. fi
  28. echo -e "$ethn \t $RX $TX "
  29. done

此脚本不需要额外再安装软件,并且可自定义欲查看接口,精确到小数,可根据流量大小灵活显示单位,默认采集间隔为1秒。

用法为:

1、将脚本保存为可执行脚本文件,比如叫net.sh。

2、chmod +x ./net.sh 将文件改成可执行脚本。

3、sh net.sh eth0即可开始监看接口eth0流量,按ctrl+c退出。

脚本是通过读取运行时文件系统/proc/net/dev中的网络实时数据,并通过简单计算得到的。关于目录/proc/net/dev,请参考下文。

3. cat /proc/net/dev

Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统是动态从系统内核读出所需信息并提交的。/proc文件系统中包含了很多目录,其中/proc/net/dev 保存了网络适配器及统计信息。

  1. [sre@CDVM-213017031 ~]$ cat /proc/net/dev
  2. Inter-| Receive | Transmit
  3. face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
  4. lo:137052296 108029 0 0 0 0 0 0 137052296 108029 0 0 0 0 0 0
  5. eth0:13661574714188 31346790620 0 0 0 0 0 0 5097461049535 27671144304 0 0 0 0 0 0
  6. 最左边的表示接口的名字,Receive表示收包,Transmit表示发送包;
  7. bytes表示收发的字节数;
  8. packets表示收发正确的包量;
  9. errs表示收发错误的包量;
  10. drop表示收发丢弃的包量;

其实,我们平时经常用的很多查看网卡实时流量的命令,都是通过读取该目录下的实时流量,并通过简单计算得到的。

4. 使用watch命令,配合ifconfig、more /proc/net/dev、cat /proc/net/dev来实时监控。比如执行 watch -n 1 "ifconfig eth0"

  1. Every 1.0s: ifconfig eth0 Thu May 4 20:26:45 2017
  2. eth0 Link encap:Ethernet HWaddr FA:16:3E:7E:55:D1
  3. inet addr:10.213.17.31 Bcast:10.213.23.255 Mask:255.255.248.0
  4. inet6 addr: fe80::f816:3eff:fe7e:55d1/64 Scope:Link
  5. UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
  6. RX packets:31350149703 errors:0 dropped:0 overruns:0 frame:0
  7. TX packets:27674701465 errors:0 dropped:0 overruns:0 carrier:0
  8. collisions:0 txqueuelen:1000
  9. RX bytes:13663400883450 (12.4 TiB) TX bytes:5098104759633 (4.6 TiB)

watch可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行。在Linux下,watch是周期性的执行下个程序,并全屏显示执行结果。

最后,除了上面提供的几种,还有很多种方式可以来看当前系统的网卡流量,我就不再一一复述了,上述方式如果不能满足你的需求,请自行google一下吧。

根据其易用性以及可读性,强烈推荐方法1和方法2。



作者:刘振锋
链接:https://www.jianshu.com/p/b9e942f3682c
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处

转:https://www.cnblogs.com/xibuhaohao/p/11321521.html



推荐阅读
  • C++ 开发实战:实用技巧与经验分享
    C++ 开发实战:实用技巧与经验分享 ... [详细]
  • 在Linux系统中,网络配置是至关重要的任务之一。本文详细解析了Firewalld和Netfilter机制,并探讨了iptables的应用。通过使用`ip addr show`命令来查看网卡IP地址(需要安装`iproute`包),当网卡未分配IP地址或处于关闭状态时,可以通过`ip link set`命令进行配置和激活。此外,文章还介绍了如何利用Firewalld和iptables实现网络流量控制和安全策略管理,为系统管理员提供了实用的操作指南。 ... [详细]
  • ButterKnife 是一款用于 Android 开发的注解库,主要用于简化视图和事件绑定。本文详细介绍了 ButterKnife 的基础用法,包括如何通过注解实现字段和方法的绑定,以及在实际项目中的应用示例。此外,文章还提到了截至 2016 年 4 月 29 日,ButterKnife 的最新版本为 8.0.1,为开发者提供了最新的功能和性能优化。 ... [详细]
  • 在过去,我曾使用过自建MySQL服务器中的MyISAM和InnoDB存储引擎(也曾尝试过Memory引擎)。今年初,我开始转向阿里云的关系型数据库服务,并深入研究了其高效的压缩存储引擎TokuDB。TokuDB在数据压缩和处理大规模数据集方面表现出色,显著提升了存储效率和查询性能。通过实际应用,我发现TokuDB不仅能够有效减少存储成本,还能显著提高数据处理速度,特别适用于高并发和大数据量的场景。 ... [详细]
  • 安装配置_安装配置MongoDB数据库
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了安装配置MongoDB数据库相关的知识,希望对你有一定的参考价值。   &n ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • 在探讨如何在Android的TextView中实现多彩文字与多样化字体效果时,本文提供了一种不依赖HTML技术的解决方案。通过使用SpannableString和相关的Span类,开发者可以轻松地为文本添加丰富的样式和颜色,从而提升用户体验。文章详细介绍了实现过程中的关键步骤和技术细节,帮助开发者快速掌握这一技巧。 ... [详细]
  • 通过优化动态网络Cookies的全网互通机制,实现了用户在任意子站点的登录和注销操作均能同步至整个网络。具体实现涉及对三个关键文件的修改:首先,在`incDv_ClsMain.asp`中定位并调整`Response.Cookies`的相关设置;其次,更新`global.asa`以确保会话状态的一致性;最后,修改`login.asp`以支持跨域认证。这一改进不仅提升了用户体验,还增强了系统的安全性和可靠性。 ... [详细]
  • 在本地环境中调试远程服务器上的网站代码执行问题,可以通过以下步骤实现:首先,在本地安装 Visual Studio 并配置远程调试工具。接着,确保服务器和本地机器之间的网络连接畅通,并正确设置防火墙规则以允许调试流量。最后,使用 Visual Studio 的远程调试功能连接到服务器,进行代码调试。这种方法不仅提高了开发效率,还减少了在服务器上直接操作的风险。 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • POJ 2482 星空中的星星:利用线段树与扫描线算法解决
    在《POJ 2482 星空中的星星》问题中,通过运用线段树和扫描线算法,可以高效地解决星星在窗口内的计数问题。该方法不仅能够快速处理大规模数据,还能确保时间复杂度的最优性,适用于各种复杂的星空模拟场景。 ... [详细]
  • 解决相对定位元素与 div 元素之间的重叠及遮挡问题
    在处理相对定位元素与 `div` 元素之间的重叠及遮挡问题时,首先需要深入理解 CSS 中不同 `position` 属性的用法及其含义。通过合理设置 `z-index`、`position` 和其他相关属性,可以有效避免元素间的相互干扰,确保页面布局的美观和功能性。建议开发者在实际应用中多加实践,掌握这些属性的综合运用技巧。 ... [详细]
  • 在Django中提交表单时遇到值错误问题如何解决?
    在Django项目中,当用户提交包含多个选择目标的表单时,可能会遇到值错误问题。本文将探讨如何通过优化表单处理逻辑和验证机制来有效解决这一问题,确保表单数据的准确性和完整性。 ... [详细]
  • 智能制造数据综合分析与应用解决方案
    在智能制造领域,生产数据通过先进的采集设备收集,并利用时序数据库或关系型数据库进行高效存储。这些数据经过处理后,通过可视化数据大屏呈现,为生产车间、生产控制中心以及管理层提供实时、精准的信息支持,助力不同应用场景下的决策优化和效率提升。 ... [详细]
  • 本文为捷克马萨里克大学(作者:Bc.PavolLoffay)的硕士论文,共67页。本硕士论文的目标是开发一个开放源码的监控 ... [详细]
author-avatar
Hello_DavidLeete_811
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有