在工作中,我们经常需要查看服务器的实时网卡流量。通常,我们会通过这几种方式查看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个开关

[sre@CDVM-213017031 ~]$ sar -n DEV 1 2

Linux 2.6.32-431.el6.x86_64 (CDVM-213017031) 05/04/2017 _x86_64_ (4 CPU)

08:05:30 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s

08:05:31 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00

08:05:31 PM eth0 1788.00 1923.00 930.47 335.60 0.00 0.00 0.00

08:05:31 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s

08:05:32 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00

08:05:32 PM eth0 1387.00 1469.00 652.12 256.98 0.00 0.00 0.00

Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s

Average: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00

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.实时监控脚本

#!/bin/bash

ethn=$1

while true

do

RX_pre=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $2}')

TX_pre=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $10}')

sleep 1

RX_next=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $2}')

TX_next=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $10}')

clear

echo -e "\t RX `date +%k:%M:%S` TX"

RX=$((${RX_next}-${RX_pre}))

TX=$((${TX_next}-${TX_pre}))

if [[ $RX -lt 1024 ]];then

RX="${RX}B/s"

elif [[ $RX -gt 1048576 ]];then

RX=$(echo $RX | awk '{print $1/1048576 "MB/s"}')

else

RX=$(echo $RX | awk '{print $1/1024 "KB/s"}')

fi

if [[ $TX -lt 1024 ]];then

TX="${TX}B/s"

elif [[ $TX -gt 1048576 ]];then

TX=$(echo $TX | awk '{print $1/1048576 "MB/s"}')

else

TX=$(echo $TX | awk '{print $1/1024 "KB/s"}')

fi

echo -e "$ethn \t $RX $TX "

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 保存了网络适配器及统计信息。

[sre@CDVM-213017031 ~]$ cat /proc/net/dev

Inter-| Receive | Transmit

face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed

lo:137052296 108029 0 0 0 0 0 0 137052296 108029 0 0 0 0 0 0

eth0:13661574714188 31346790620 0 0 0 0 0 0 5097461049535 27671144304 0 0 0 0 0 0

最左边的表示接口的名字,Receive表示收包,Transmit表示发送包;

bytes表示收发的字节数;

packets表示收发正确的包量;

errs表示收发错误的包量;

drop表示收发丢弃的包量;

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

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

Every 1.0s: ifconfig eth0Thu May 4 20:26:45 2017

eth0 Link encap:Ethernet HWaddr FA:16:3E:7E:55:D1

inet addr:10.213.17.31 Bcast:10.213.23.255 Mask:255.255.248.0

inet6 addr: fe80::f816:3eff:fe7e:55d1/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:31350149703 errors:0 dropped:0 overruns:0 frame:0

TX packets:27674701465 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:13663400883450 (12.4 TiB) TX bytes:5098104759633 (4.6 TiB)

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

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

根据其易用性以及可读性,强烈推荐方法1和方法2。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

ubuntu 网卡流量_详解Linux查看实时网卡流量的几种方式相关推荐

  1. linux 查看网络流量来源_详解Linux查看实时网卡流量的几种方式

    在工作中,我们经常需要查看服务器的实时网卡流量.通常,我们会通过这几种方式查看Linux服务器的实时网卡流量. 1. sar -n DEV 1 2 sar命令包含在sysstat工具包中,提供系统的众 ...

  2. java 判断数组已经存满_详解Java中数组判断元素存在几种方式比较

    1. 通过将数组转换成List,然后使用List中的contains进行判断其是否存在 public static boolean useList(String[] arr,String contai ...

  3. python repair修复功能_详解Python修复遥感影像条带的两种方式

    GDAL修复Landsat ETM+影像条带 Landsat7 ETM+卫星影像由于卫星传感器故障,导致此后获取的影像出现了条带.如下图所示, 影像中均匀的布满条带. 使用GDAL修复影像条带的代码如 ...

  4. linux ifconfig命令参数及用法详解--linux查看配置网卡命令

    ifconfig 是一个用来查看.配置.启用或禁用网络接口的工具,这个工具极为常用的.可以用这个工具来临时性的配置网卡的IP地址.掩码.广播地址.网关等.也可以把 它写入一个文件中(比如/etc/rc ...

  5. springboot初始化逻辑_详解Spring Boot中初始化资源的几种方式

    假设有这么一个需求,要求在项目启动过程中,完成线程池的初始化,加密证书加载等功能,你会怎么做?如果没想好答案,请接着往下看.今天介绍几种在Spring Boot中进行资源初始化的方式,帮助大家解决和回 ...

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

    Linux查看实时网卡流量的几种方式 来源  https://www.jianshu.com/p/b9e942f3682c 在工作中,我们经常需要查看服务器的实时网卡流量.通常,我们会通过这几种方式查 ...

  7. linux 内存 参数,linux free命令参数及用法详解(linux查看内存命令)

    linux free命令参数及用法详解(linux查看内存命令) 2019年05月31日 | 萬仟网科技 | 我要评论 free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段 ...

  8. linux中whoami命令的作用是,linux whoami命令参数及用法详解(linux查看登陆用户名)

    linux whoami命令参数及用法详解(linux查看登陆用户名) 2019年05月31日 | 萬仟网科技 | 我要评论 whoami 命令显示登录名.与使用命令 who 并指定 am i 不同, ...

  9. java配置文件实现方式_java相关:详解Spring加载Properties配置文件的四种方式

    java相关:详解Spring加载Properties配置文件的四种方式 发布于 2020-4-29| 复制链接 摘记: 一.通过 context:property-placeholder 标签实现配 ...

最新文章

  1. 字符串模糊/精确查询——mysql
  2. Java线程详解(8)-线程的同步
  3. Winform中设置ZedGraph鼠标焦点位置画出十字线并在鼠标移出时十字线消失
  4. import cv2时ImportError: libjasper.so.1: cannot open shared object file: No such file or directory
  5. hazelcast_Hazelcast的MapLoader陷阱
  6. photoshop cs3 字体 即时预览
  7. 微软力挺Silverlight 反击美棒球赛用Flash直播
  8. wifi扫描流程图_扫描方法与流程
  9. Java基础教程:JavaArrays工具类
  10. Java HotSpot(TM) 64-Bit Server VM warning: NewSize (1536k) is greater than the MaxNewSize (1024k)
  11. plsql可执行别的用户对象,过程却不行(AUTHID CURRENT_USER)
  12. ES6深入浅出-1 新版变量声明:let 和 const-1.视频 概述
  13. GMS地下水数值模拟
  14. 如何制定有效的项目管理计划?
  15. 如何让cmd一直默认以管理员身份打开
  16. python抓取网页图片示例
  17. c语言isfinite_visual-c-std :: isfinite在MSVC上
  18. 一个学计算机的打字速度慢,小学初中学生打字速度慢的原因及解决办法
  19. 子div相对于父div位置放置
  20. 舔狗舔到最后一无所有 (线性dp)

热门文章

  1. Java学习:创建简单的名片管理系统
  2. 计算机类sci杂志排名,计算机类SCI杂志排名
  3. UID和GID(详细说明)
  4. 【混合编程jni 】第九篇之Jni总结
  5. 《牛津字典精华总结》- 初阶系列 - 字母 - S
  6. 如何安装ruby、rails
  7. 嵌入式开发学习之--RCC(上)
  8. 升哲科技荣获2022年度华夏建设科学技术奖二等奖
  9. viper12a电路图_viper12a电磁炉电路图
  10. 悟空CRM在保险行业的应用