python获取系统内存、CPU、磁盘、平均负载信息并保存到数据库中
来源:互联网 发布:被淘宝卖家投诉怎么办 编辑:程序博客网 时间:2024/06/05 05:56
本主题主要考察的是python os模块调用linux命令、模块、函数调用以及通过python操纵数据库。
假设已经可以正常连接mysql数据库了,保存系统信息的数据库名称为hostinfo,相关的四个数据表分别名为cpuinfo、meminfo、diskinfo、loadinfo(数据库和表都是程序运行过程中自动创建的)
1.在开发目录下新建一个python的包,然后包含四个python文件:mem.py、load.py、disk.py、cpu.py以及一个程序运行的主文件main.py,结构如下:
2. 编写mem.py 文件
import osdef mem_usage(): f = os.popen("free -m |grep Mem |awk '{print $2,$3,$4}'") return f.read()if __name__ == "__main__": print mem_usage()
3. 编写load.py文件
import osdef load_avg(): f = os.popen("uptime | sed 's/,//g' | awk '{print $8,$9,$10}'") return f.read().strip()if __name__ == "__main__": print load_avg()
4. 编写disk.py文件
import osdef disk_usage(): f = os.popen("df -h | head -2 | tail -1 | awk '{print $2,$3,$4,$5}'") return f.read().strip()if __name__ == "__main__": print disk_usage()
5. 编写cpu.py文件
import osdef cpu_usage(): f = os.popen("top -bi -n 1| awk '{print $2,$4}'").read().split('\n')[2] return fif __name__ == "__main__": print cpu_usage()
6. 编写main.py文件
#!/usr/bin/env python#coding:utf-8'''file:main.pydate:9/8/17 10:21 AMauthor:lockeyemail:lockey@123.comdesc:'''from __future__ import divisionimport MySQLdb as mysqlimport timeimport cpu,disk,load,memusername = 'root'password = 'redhat'host = 'localhost'deleteall = Falseconn = mysql.connect(host,username,password)cur = conn.cursor()sqldisk = 'insert into diskinfo values(%s,%s,%s,%s,%s)'sqlmem = 'insert into meminfo values(%s,%s,%s,%s)'sqlcpu = 'insert into cpuinfo values(%s,%s,%s,%s)'sqlload = 'insert into loadinfo values(%s,%s,%s,%s)'try: cur.execute('CREATE DATABASE hostinfo')except: passfinally: conn.select_db('hostinfo') try: cur.execute('CREATE TABLE diskinfo (total varchar(10), used varchar(10), avail varchar(10), usedPercent varchar(10), getTime varchar(30))') cur.execute('CREATE TABLE meminfo (total varchar (20), used varchar(10), free varchar(10),getTime varchar(30))') cur.execute('CREATE TABLE loadinfo (time1 varchar(10), time5 varchar(10), time10 varchar(10), getTime varchar(30))') cur.execute('CREATE TABLE cpuinfo (usrused varchar(10), sysused varchar(10), usedPercent varchar(10), getTime varchar(30))') except: pass finally: diskuseinfo = disk.disk_usage().split(' ') disksize = diskuseinfo[0] diskuse = diskuseinfo[1] diskfree = diskuseinfo[2] diskused = diskuseinfo[3] memuseinfos = map(int,mem.mem_usage().split(' ')) memtotal = memuseinfos[0] memused = memuseinfos[1] memfree = memuseinfos[2] memusedp = str(round(memused/memtotal,5))+'%' memfreep = str(round(memfree/memtotal,5))+'%' load = load.load_avg().split(' ') load1s = load[0]+'%' load5s = load[1]+'%' load15s = load[2]+'%' cpuinfo = cpu.cpu_usage() cpuinfo2 = cpuinfo.split(' ') cpuusr = cpuinfo2[0]+'%' cpusys = cpuinfo2[1]+'%' cpuusage = str(float(cpuinfo2[0]) + float(cpuinfo2[1]))+'%' timestr = time.time() cur.execute(sqldisk,(disksize,diskuse,diskfree,diskused,timestr)) cur.execute(sqlmem, (memtotal, memusedp, memfreep, timestr )) cur.execute(sqlload, (load1s, load5s, load15s, timestr)) cur.execute(sqlcpu, (cpuusr, cpusys, cpuusage, timestr)) if deleteall == True: cur.execute('drop table cpuinfo') cur.execute('drop table meminfo') cur.execute('drop table diskinfo') cur.execute('drop table loadinfo') print 'All tables have been deleted!' else: cur.execute('select * from cpuinfo') cpus = cur.fetchall() print cpus cur.execute('select * from meminfo') mems = cur.fetchall() print mems cur.execute('select * from diskinfo') disks = cur.fetchall() print disks cur.execute('select * from loadinfo') loads = cur.fetchall() print loads conn.commit() cur.close() conn.close() print 'Database closed!'
运行结果截图:
当main.py文件中deleteall = False时的运行结果:
当main.py文件中deleteall = True时的运行结果:
阅读全文
1 0
- python获取系统内存、CPU、磁盘、平均负载信息并保存到数据库中
- python编程练习之四——获取系统内存、CPU、磁盘、平均负载信息并保存到数据库中
- 获取系统磁盘、CPU、内存信息
- linux系统下 python获取 内存、cpu、负载、网络流量、硬盘等信息
- linux系统下 python获取 内存、cpu、负载、网络流量、硬盘等信息
- 转载:linux系统下 python获取 内存、cpu、负载、网络流量、硬盘等信息
- C++/QT 获取系统CPU、内存、磁盘、进程相关信息
- python监控linux系统信息(流量/内存/cpu/负载/磁盘/运转时间) Centos安装X Window和桌面环境
- python自动化运维学习------使用模块psutil获取系统cpu、内存、磁盘、网络、进程等信息
- 获取CPU,内存使用率,磁盘相关信息
- java获取cpu,内存,磁盘等信息
- java获取cpu,内存,磁盘等信息
- java获取cpu,内存,磁盘等信息
- C#-获取磁盘,cpu,内存信息
- 【SHELL】监控系统信息CPU,磁盘,内存
- Servlet如何从浏览器的表单获取中文信息并保存到磁盘的xml文档中不出现乱码
- 联网获取天气信息并保存到本地数据库
- 使用python获取CPU和内存信息(linux系统)
- Java-线程创建的几种方式
- java反射
- Xcode9如何push到远程git仓库
- Red Hat CloudForms REST API 学习(二)
- 解决CentOs下FTP无法使用的问题(cannot change directory:/home/hlapp)
- python获取系统内存、CPU、磁盘、平均负载信息并保存到数据库中
- 1174:图书馆占位
- e6第二话关于赋值的那些事 结构赋值
- POJ
- Java-几种线程同步的方法
- zookeeper-curator-interprocessmutex
- nifi探索之SplitText
- IDEA如何打包可运行jar的一个问题
- 从 Apache RocketMQ 和 Kafka 看 Topic 数量对单机性能的影响