Python实现Linux监控的方法

  

  

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

  

进程信息:系统中的任何一个进程,在proc的子目录中都有一个同名的进程ID,可以找到cmdline, mem,根,统计,statm,以及地位。某些信息只有超级用户可见,例如进程根目录。每一个单独含有现有进程信息的进程有一些可用的专门链接,系统中的任何一个进程都有一个单独的自链接指向进程信息,其用处就是从进程中获取命令行信息。

  

系统信息:如果需要了解整个系统信息中也可以从/proc/stat中获得,其中包括CPU占用情况,磁盘空间,内存对换,中断等。

  

CPU信息:利用/proc/CPUinfo文件可以获得中央处理器的当前准确信息。

  

负载信息:/proc/loadavg文件包含系统负载信息。

  

系统内存信息:/proc/meminfo文件包含系统内存的详细信息,其中显示物理内存的数量,可用交换空间的数量,以及空闲内存的数量等。

  

  

之处,,apm高级电源管理信息

  

之处,,cmdline这个文件给出了内核启动的命令行

  

之处,,CPUinfo中央处理器信息

  

之处,,设备可以用到的设备(块设备/字符设备)

  

之处,,dma显示当前使用的dma通道

  

之处,,文件系统核心配置的文件系统

  

之处,,端ioports当前使用的I/O口

  

之处,,interrupts 这个文件的每一行都有一个保留的中断

  

之处,,kcore ,系统物理内存映像

  

之处,,kmsg ,,核心输出的消息,被送到日志文件

  

之处,,mdstat 这个文件包含了由医学博士设备驱动程序控制的RAID设备信息

  

之处,,loadavg系统平均负载均衡

  

之处,,meminfo存储器使用信息,包括物理内存和交换内存

  

之处,,模块这个文件给出可加载内核模块的信息.lsmod程序用这些信息显示有关模块的名称,大小,使用数目方面的信息

  

之处,,净网络协议状态信息

  

之处,,partitions 系统识别的分区表

  

之处,,pci pci设备信息

  

之处,,scsi ,,scsi设备信息

  

之处,,self ,,到查看/proc程序进程目录的符号连接

  

之处,,stat ,,这个文件包含的信息有CPU利用率、磁盘,内存页,内存对换,全部中断,接触开关以及赏赐自举时间

  

之处,,swaps ,显示的是交换分区的使用情况

  

之处,,uptime 这个文件给出自从上次系统自举以来的秒数,以及其中有多少秒处于空闲

  

之处,,版本这个文件只有一行内容,说明正在运行的内核版本。可以用标准的编程方法进行分析获得所需的系统信息

  

        #?usr/bin/env Python   从__future__进口print_function   从进口OrderedDict集合   进口pprint   def CPUinfo ():   “在/proc/CPUinfo返回信息   作为一个字典在以下格式:   CPU_info [' proc0 ']={…}   CPU_info [' proc1 ']={…}   '''   CPUinfo=OrderedDict ()   procinfo=OrderedDict ()   nprocs=0   张开('/proc/CPUinfo ') f:   f的线:   如果不是line.strip ():   #结束>   #?usr/bin/env Python   进口操作系统   def load_stat ():   loadavg={}   f=开放(“/proc/loadavg”)   .split con=f.read () ()   f.close ()   loadavg [' lavg_1 ']=[0]监狱   loadavg [' lavg_5 ']=反对[1]   loadavg [' lavg_15 ']=反对[2]   loadavg [' nr ']=反对[3]   loadavg [' last_pid ']=反对[4]   返回loadavg   打印“loadavg load_stat () (“lavg_15”)      

简单说明一下清单2:清单2读?proc/loadavg中的信息,导入操作系统:Python中导入用于导入不同的模块,包括系统提供和自定义的模块。其基本形式为:进口模块名(别名),如果只需要导入模块中的部分或全部内容可以用形式:从模块名进口*来导入相应的模块. o模块os模块提供了一个统一的操作系统接口函数,操作系统模块能在不同操作系统平台如nt, posix中的特定函数间自动切换,从而实现跨平台操作。

  

Python实现Linux监控的方法