[Bytes,Network,eth0,网络数据,Linux]如何从Linux系统中获取带宽、流量网络数据-阿里云开发者社区

开发者社区> dasein58> 正文

[Bytes,Network,eth0,网络数据,Linux]如何从Linux系统中获取带宽、流量网络数据

简介:   Linux中的网络数据提取   在Linux系统中我们可以从/proc 目录里来获取相应的数据并进行处理。   让我们来看下网络相关的/proc/net/dev
+关注继续查看

  Linux中的网络数据提取

  在Linux系统中我们可以从/proc 目录里来获取相应的数据并进行处理。

  让我们来看下网络相关的/proc/net/dev

  cat /proc/net/dev

  Inter-| Receive | Transmit

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

  eth0: 313568232649602 558303341870 0 0 0 0 0 0 227503770878768 476857419543 0 0 0 0 0 0

  lo: 440905770 5512243 0 0 0 0 0 0 440905770 5512243 0 0 0 0 0 0

  这个文件是本机所有网卡的数据记录。

  从标题可以看出,第一列是网卡名称,第二列是入方向字节数(流量),第三列是入方向数据包数量,第四列是入方向错误包数,第10列是出方向字节数(流量)

  脚本计算带宽和流量

  有了数据,我们就可以写个shell脚本来获取买二手域名带宽和流量数据了

  脚本getnettraffic.sh

  #!/bin/bash

  DATE1=date --utc

  RX1=cat /proc/net/dev | grep eth0 |awk '{print $2}'

  TX1=cat /proc/net/dev | grep eth0 |awk '{print $10}'

  sleep60

  DATE2=date --utc

  RX2=cat /proc/net/dev | grep eth0 |awk '{print $2}'

  TX2=cat /proc/net/dev | grep eth0 |awk '{print $10}'

  RX=$(( $RX2-$RX1 ))

  TX=$(( $TX2-$TX1 ))

  RXBAND=$(($RX*8/60/1024/1024))

  TXBAND=$(($TX*8/60/1024/1024))

  echo "time Range $DATE1 - $DATE2"

  echo "Network In Bytes: $RX Bytes"

  echo "Network Out Bytes: $TX Bytes"

  echo "Network In BW: $RXBAND Mbps"

  echo "Network Out BW: $TXBAND Mbps"

  执行结果:

  time Range Thu Jun 4 05:38:06 UTC 2021 - Thu Jun 4 05:39:06 UTC 2021

  Network In Bytes: 628578266 Bytes

  Network Out Bytes: 465529561 Bytes

  Network In BW: 79 Mbps

  Network Out BW: 59 Mbps

  扩展

  我们已经知道 /proc/net/dev 这个文件存储了主机上的网络数据。但如果我想看某个进程的网络数据怎么办?

  同样的Linux也提供了 /proc/$PID/net/dev 这个文件来记录进程的网络数据。

  如果主机上运行了虚拟机或者docker容器,也可以使用这种方法来获取网络数据。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
9123 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
10734 0
linux内核数据结构之链表【转】
转自:http://www.cnblogs.com/Anker/archive/2013/12/15/3475643.html 1、前言    最近写代码需用到链表结构,正好公共库有关于链表的。
730 0
慢慢欣赏linux 网络协议栈四 sk_buff以及数据收发
慢慢欣赏linux 网络协议栈四 sk_buff以及数据收发以3c359x.c的网卡为例,因为这是《深入理解Linux网络技术内幕》里面的例子 irqreturn_t vortex_interrupt(int irq, void *dev_id) vortex_rx(dev); =>int vor...
759 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
12822 0
linux系统部署mongodb数据库
linux系统部署mongodb数据库http://www.bieryun.com/3215.html 首先大家要先去mongodb的官网下载我们的Linux版本的数据库,大家可以直接点击当前链接进行下载:https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.6.3.tgz,这是最新版本的mongodb大家若是下载不来,可以直接去官网自己下载去。
1091 0
+关注
752
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载