*这篇文章网上已经有相关代码,为了加深印象,我做了相关批注,希望对朋友们有帮助

工作原理:基于/proc文件系统

Linux 系统为管理员提供了非常好的方法,使其可以在系统运行时更改内核,而不需要重新引导内核系统,这是通过/proc 虚拟文件系统实现的。/proc 文件虚拟系统是一种内核和内核模块用来向进程(process)发送信息的机制(所以叫做“/proc”),这个伪文件系统允许与内核内部数据结构交互,获取有关进程的有用信息,在运行中(on the fly)改变设置(通过改变内核参数)。与其他文件系统不同,/proc 存在于内存而不是硬盘中。proc 文件系统提供的信息如下:

1:进程信息:系统中的任何一个进程,在 proc 的子目录中都有一个同名的进程 ID,可以找到 cmdline、

mem、root、stat、statm,以及 status。某些信息只有超级用户可见,例如进程根目录。每一个单独含

有现有进程信息的进程有一些可用的专门链接,系统中的任何一个进程都有一个单独的自链接指向进程

信息,其用处就是从进程中获取命令行信息。
2:系统信息:如果需要了解整个系统信息中也可以从/proc/stat 中获得,其中包括 CPU 占用情况、磁盘

空间、内存对换、中断等。
3:CPU 信息:利用/proc/CPUinfo 文件可以获得中央处理器的当前准确信息。
   负载信息:/proc/loadavg 文件包含系统负载信息。
4:系统内存信息:/proc/meminfo 文件包含系统内存的详细信息,其中显示物理内存的数量、可用交换空

间的数量,以及空闲内存的数量等。

摘记自http://www.ibm.com/developerworks/cn/linux/1312_caojh_pythonlinux/index.html

使用 Python 脚本实现对 Linux 服务器的监控
#!/usr/bin/env python
# _*_coding:utf-8_*_
# File: get_net_infor.py
# Author li ning
# Date 2015.11.30 00:41:35
import sys
import time """
原理:linux系统基于一切皆文件原理,我们可以把任何信息当做字符串读入进行分析
"""
#若没有提供参数,这里默认为网卡为eth0,可根据自己实际情况接参数.eg:(python get_net_infor.py eth1)
if len(sys.argv) > 1:
INTERFACE = sys.argv[1]
else:
INTERFACE = "eth0"
print "当前查看的网卡为:", INTERFACE STATS = [] #定义接收流量函数
def rx():
#open 读取文件若非常大,读入到内存会非常耗时,这时就建议用readline 而非readlines
ifstat = open("/proc/net/dev").readlines()
#遍历list ifstat中的字符串
for interface in ifstat:
#判断eth0是否在字符串中
if INTERFACE in interface:
#默认空格分裂字符串获取需要的流量包值
stat = float(interface.split()[1])
#将值复制给STATS
STATS[0:] = [stat] #定义发送流量函数
def tx():
ifstat = open("/proc/net/dev").readlines()
for interface in ifstat:
if INTERFACE in interface:
stat = float(interface.split()[9])
STATS[1:] = [stat] if __name__ == '__main__':
print "IN",">>>>","OUT"
rx()
tx()
#死循环 时刻监控网卡流量
while True:
time.sleep(1)
sta_0 = list(STATS)
rx()
tx()
RX = float(STATS[0])
RX_0 = sta_0[0]
TX = float(STATS[0])
TX_0 = sta_0[1]
#round函数转换,保留小数点后三位
RX_INFO = round((RX - RX_0)/1024/1024,3)
TX_INFO = round((TX - TX_0)/1024/1024,3)
print RX_INFO,"MB",TX_INFO,"MB"
以下是本地运行结果

用 Python 脚本实现对 Linux 服务器的网卡流量监控的更多相关文章

  1. 用 Python 脚本实现对 Linux 服务器的监控

    目前 Linux 下有一些使用 Python 语言编写的 Linux 系统监控工具 比如 inotify-sync(文件系统安全监控软件).glances(资源监控工具)在实际工作中,Linux 系统 ...

  2. Python 脚本实现对 Linux 服务器的监控

    本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn 摘要: 原文地址 由于原文来自微信公众号,并且脚本都是图片,所以这里 ...

  3. Python脚本实现值更新事件赋值过程记录日志监控

    #LogWatch 实现值更新事件赋值过程记录日志监控 clr.AddReference('System') clr.AddReference('Kingdee.BOS') clr.AddRefere ...

  4. Linux下iftop网卡流量监控使用

    在类linux系统中可以使用top查看系统资源.进程.内存占用等信息.查看网络状态可以使用netstat.nmap等工具.若要查看实时的网络流量,监控TCP/IP连接等,则可以使用iftop. 一.i ...

  5. Python中实现对list做减法操作介绍

    Python中实现对list做减法操作介绍 这篇文章主要介绍了Python中实现对list做减法操作介绍,需要的朋友可以参考下 问题描述:假设我有这样两个list, 一个是list1,list1 = ...

  6. 《Unix/Linux日志分析与流量监控》书稿完成

    <Unix/Linux日志分析与流量监控>书稿完成 近日,历时3年创作的75万字书稿已完成,本书紧紧围绕网络安全的主题,对各种Unix/Linux系统及网络服务日志进行了全面系统的讲解,从 ...

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

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

  8. Linux 查看实时网卡流量的方法 sar nload iftop

    1.sar 计量脚本 sar(System Activity Reporter 系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读 ...

  9. Linux 查看实时网卡流量的方法 网速 nload sar iftop dstat

    1.使用nload yum install -y gcc gcc-c++ ncurses-devel make wgetwget http://www.roland-riegel.de/nload/n ...

随机推荐

  1. 【deep learning学习笔记】注释yusugomori的RBM代码 --- 头文件

    百度了半天yusugomori,也不知道他是谁.不过这位老兄写了deep learning的代码,包括RBM.逻辑回归.DBN.autoencoder等,实现语言包括c.c++.java.python ...

  2. 2440裸机驱动之PWM开发

    原文http://blog.chinaunix.net/uid-14114479-id-3125685.html ARM驱动蜂鸣器的方式有两种:一种是PWM输出口直接驱动,另一种是利用IO定时翻转电平 ...

  3. poj1475Pushing Boxes

    N - Pushing Boxes Time Limit:2000MS     Memory Limit:131072KB     64bit IO Format:%I64d & %I64u ...

  4. 通告机制Notification

    Obj-c的基本通讯原则是对象间的消息传递,这种情况多出现在两个对象之间.但是如果多个对象共同关注一个对象状态的时候呢,当然可以让发生事件的对象向所有关注他的对象发送消息,但是这并不高效.所以有了通告 ...

  5. 基于数据库的自动化生成工具,自动生成JavaBean、自动生成数据库文档等(v4.1.2版)

            目录:            第1版:http://blog.csdn.net/vipbooks/article/details/51912143            第2版:htt ...

  6. CSS3样式linear-gradient的使用

    linear-gradient linear-gradient是CSS3中新增的样式,主要用于颜色的渐变效果.MDN地址 linear-gradient在不同内核下使用方式不同,详细内容可参考w3cp ...

  7. 开发人员如何上google查资源,如果浏览国外资源方法

    启动浏览器后15秒左右,浏览器的右上角就会出现图标 启用防火墙功能(右上角墙形图标),这时候程序就会去寻找网上代理,从而达到访问GOOGLE的效果,提示如果不访问google网站,可再点击一下关闭防火 ...

  8. LaTeX入门教程

    LaTeX(LATEX,音译"拉泰赫")是一种基于ΤΕΧ的排版系统,由美国计算机学家莱斯利·兰伯特(Leslie Lamport)在20世纪80年代初期开发,利用这种格式,即使使用 ...

  9. 不惧面试:HTTP协议(1) - 基础扫盲

    v博客前言 先交代下背景,之前在一家公司面试.NET开发,去了先是做一份笔试题,有一半是关于HTTP协议的,技术总监直接面试,也是问一大堆HTTP协议的知识点,可能跟该公司的产品有关,该公司属于互联网 ...

  10. Hadoop入门实例——WordCount统计单词

    首先要说明的是运行Hadoop需要jdk1.6或以上版本,如果你还没有搭建好Hadoop集群,请参考我的另一篇文章: Linux环境搭建Hadoop伪分布模式 马上进入正题. 1.启动Hadoop集群 ...