如何从Linux系统中获取带宽、流量网络数据
引入
国外的云主机厂商,例如AWS提供的网络数据是以流量为单位的,例如下面的图片:
从上图来看,其取值方式为
每隔5分钟取值1次,(每次)每个点显示为1分钟内的流量字节数(Bytes)
带宽与流量
我们从上图随便取个点来计算下:
带宽= 单位时间内流量*8 /时间段 /1024/1024 (Mbps)
AWS network in 619581409 对应得带宽为 78.8 Mbps
AWS network out 421092676 对应得带宽为 53.5Mbps
想图个省事,可以直接删掉AWS流量的后面7位数字,就可以得到带宽(Mbps)(误差稍有点大)
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 2015 - Thu Jun 4 05:39:06 UTC 2015
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容器,也可以使用这种方法来获取网络数据。
如何从Linux系统中获取带宽、流量网络数据的更多相关文章
- linux系统中重启网卡后网络不通(NetworkManager篇)
一.故障现象 RHEL7.6系统,使用nmcli绑定双网卡后,再使用以下命令重启network服务后主机网络异常,导致无法通过ssh远程登录系统. # systemctl restart networ ...
- 在Linux系统中修改IP地址
在Linux系统中,通过编辑网络配置文件,设置系统IP地址,当然要在root权限下执行,具体步骤如下: 1.切换路径到/etc/sysconfig/network-scripts [root@Comp ...
- Linux 系统中僵尸进程
Linux 系统中僵尸进程和现实中僵尸(虽然我也没见过)类似,虽然已经死了,但是由于没人给它们收尸,还能四处走动.僵尸进程指的是那些虽然已经终止的进程,但仍然保留一些信息,等待其父进程为其收尸.配图源 ...
- 用户管理 之 Linux 系统中的超级权限的控制
在Linux操作系统中,root的权限是最高的,也被称为超级权限的拥有者.普通用户无法执行的操作,root用户都能完成,所以也被称之为超级管理用户. 在系统中,每个文件.目录和进程,都归属于某一个用户 ...
- 获得Unix/Linux系统中的IP、MAC地址等信息
获得Unix/Linux系统中的IP.MAC地址等信息 中高级 | 2010-07-13 16:03 | 分类:①C语言. Unix/Linux. 网络编程 ②手册 | 4,471 次阅读 ...
- Linux系统中的计划任务
在系统的工作管理中,我们经常会有需要去告诉电脑某些特定的时间执行一些操作,比如定时提醒工作人员需要做什么事情,或者在每天凌晨进行文件备份等等.这就需要某些命令来达成计划任务. 计划任务可以大体上分成两 ...
- 【Linux】Linux系统中的权限详解
我们linux服务器上有严格的权限等级,如果权限过高导致误操作会增加服务器的风险.所以对于了解linux系统中的各种权限及要给用户,服务等分配合理的权限十分重要. 一.文件基本权限 首先看下linux ...
- 嵌入式linux系统中,lsusb出现unable to initialize libusb: -99 解决办法 【转】
转自:http://cpbest.blog.163.com/blog/static/41241519201111575726966/ libusb是linux系统中,提供给用户空间访问usb设备的AP ...
- linux系统中的进程状态分析
转载地址:https://blog.csdn.net/shenwansangz/article/details/51981459 linux是一个多用户,多任务的系统,可以同时运行多个用户的多个程序, ...
随机推荐
- mysql中的unique
distinct可以把重复的行去掉,查询时候用select distinct * from ...; unique在MySQL中是完整性约束里的一种,如果某列的值需要是唯一的那么就添加UNIQUE约束 ...
- webpack之基础学习
webpack工作原理: 通过一个入口文件,main.js开始找到你的项目的所有依赖文件,使用loaders处理它们,最后打包为一个浏览器可识别的JavaScript文件. Webpack的核心原理 ...
- 採集和输出 DeckLink Studio 4K
- Swift开放StatsD后上传数据的出现,出现退换货503的Bug
转载请注明出处:http://blog.csdn.net/cywosp/article/details/40781569 swift在版本号2.1.0之前假设各个服务的配置文件里打开下面配置后,且系统 ...
- Tree( 树) 组件[2]
本节课重点了解 EasyUI 中 Tree(树)组件的使用方法, 这个组件依赖于 Draggable(拖动)和 Droppable(放置)组件.一. 异步加载如果想从数据库里获取导航内容, 那么就必须 ...
- Set,Map数据结构
/*Set : 多个value的集合, value不重复Map : 多个key-value对的集合, key不重复 1. Set容器 1). Set() 2). Set(array) 3). add( ...
- 触发器内insert,delete,update判断执行不同的内容
create trigger tr_aon afor insert,update,delere asbegin IF EXISTS(SELECT 1 FROM inserted) AND NOT EX ...
- 第8章BOM笔记
第八章 BOM 一. Window 在浏览器中window有双重角色,他既是JavaScript访问浏览器窗口的一个借口,又是ECMAscript 规定的Global对象. 1.全局作用域 由于win ...
- linux 下编译安装php
系统环境: CentOS 6.5 x86_64 下载 PHP 源码包 # wget http://cn2.php.net/distributions/php-5.5.9.tar.bz2 # tar x ...
- VC2013 添加库文件
1.项目--〉属性--〉链接器 1. You #include the header file (.h) file in your project as necessary. 2. You lis ...