1. 程式人生 > >python獲取系統記憶體、CPU、磁碟、平均負載資訊並儲存到資料庫中

python獲取系統記憶體、CPU、磁碟、平均負載資訊並儲存到資料庫中

本主題主要考察的是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 os
def 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 os
def 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 os
def 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 os
def cpu_usage():
    f = os.popen("top -bi -n 1| awk '{print $2,$4}'"
).read().split('\n')[2] return f if __name__ == "__main__": print cpu_usage()

6. 編寫main.py檔案

#!/usr/bin/env python
#coding:utf-8
'''
file:main.py
date:9/8/17 10:21 AM
author:lockey
email:[email protected]
desc:
'''
from __future__ import division
import MySQLdb as mysql
import time
import cpu,disk,load,mem

username = 'root'
password  = 'redhat'
host = 'localhost'
deleteall = False
conn = 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:
    pass
finally:
    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時的執行結果:

這裡寫圖片描述

相關推薦

python獲取系統記憶體CPU磁碟平均負載資訊儲存資料庫

本主題主要考察的是python os模組呼叫linux命令、模組、函式呼叫以及通過python操縱資料庫。 假設已經可以正常連線mysql資料庫了,儲存系統資訊的資料庫名稱為hostinfo,相關的四個資料表分別名為cpuinfo、meminfo、diskin

Python獲取計算機記憶體硬碟CPU資訊

匯入psutil模組 import psutil 獲取CPU資訊 #獲取CPU資訊 @staticmethod def GetCpuInfo(): cpu_count = psutil.cpu_count(logical=False) #1代表單核CP

C#/VB.NET 獲取電腦屬性(硬盤ID硬盤容量Cpu序列號MAC地址系統類型)

mic class network pcm .cn bbb alt OS -h 原文:C#/VB.NET 獲取電腦屬性(硬盤ID、硬盤容量、Cpu序列號、MAC地址、系統類型)在開發過程中,經常需要獲取電腦的一些屬性,如獲取硬盤ID/CPU序列號/MAC地址作為來加密字符串

Python獲取檔案目錄下視訊時長大小寫入excle檔案

關鍵詞:os moviepy xlwt # -*- coding=utf-8 -*- import os import sys import xlwt from moviepy.editor import VideoFileClip file_dir = u"G:/視訊

python獲取系統基礎性能參數實現寫入文件

default python 後臺運行 action import psutil #!/usr/bin/env python # coding:utf-8 import psutil import time import sys from optparse import OptionP

Python獲取系統信息(慢慢補充)

ces 慢慢 hat .get spl 主機名 start serve /etc/ 獲取OS信息: 1. os = " ".join(platform.linux_distribution()) 2. os = subprocess.call([‘cat‘, ‘/etc/r

adb命令檢測apk啟動時間內存CPU使用情況流量電池電量等——常用的adb命令

serial 信息 proc idg 情況 電量 pid art str ADB:Android Debug Bridge,是Android SDK裏一個可以直接操作安卓模擬器或真實設備的工具,頗為強大。 檢測APP: adb shell am start

python獲取系統資訊模組詳解

python是跨平臺語言,有時候我們的程式需要執行在不同系統上,例如:linux、MacOs、 Windows,為了使程式有更好通用性,需要根據不同系統使用不同操作方式。我們可以使用platform模組來獲取系統資訊。platform是python自帶模組,我們可以直接使用,下面來介紹這個模組:首先匯入模組:

python獲取系統信息模塊詳解

常用 format thead lin 結果 6.0 print inux 系統類型 python是跨平臺語言,有時候我們的程序需要運行在不同系統上,例如:linux、MacOs、 Windows,為了使程序有更好通用性,需要根據不同系統使用不同操作方式。我們可以使用pla

物理cpucpu核數邏輯cpu數筆記

一、物理CPU數 機器的主機板上實際插入插槽的CPU個數。 二、CPU核數 單塊CPU上面整合一個或者多個處理器晶片(稱為Core,核心)。 CPU最初發展的時候是一個CPU一個處理核心,CPU的效能主要靠提高核心工作頻率來提高,但是僅僅提高單核晶片的速度會產生過多熱量且無

【C++多執行緒程式設計學習(1)】-CPU個數CPU核心數CPU執行緒數

轉自:CPU個數、CPU核心數、CPU執行緒數(by kimsimple)   CPU個數即CPU晶片個數。 CPU核心數是指物理上,也就是硬體上存在著幾個核心。比如,雙核就是包括2個相對獨立的CPU核心單元組,四核就包含4個相對獨立的CPU核心單元組。 CPU執行緒數是一

CPU邏輯數量CPU物理核心幾核幾線程簡述

1. CPU 物理核心 CPU物理核心就是計算機上實際配置的CPU個數。 在 Linux 上可以開啟 cat /proc/cpuinfo 來檢視,其中的 physical id 就是每個物理CPU的ID,你能找到幾個 physical id 就代表你的計算機實際有幾個CPU。 在 Lin

Android獲取系統記憶體資訊以及程序資訊-----ActivityManager的使用(一)

                                                                                                         轉載請註明出處:http://blog.csdn.net/qin

win 32Api獲取系統記憶體函式

windows程式設計中 獲取系統記憶體資訊有2個api,分別是GlobalMemoryStatus和GlobalMemoryStatusEx,GlobalMemoryStatus函式可以在C語言咧直接呼叫,但是GlobalMemoryStatusEx卻不可以直接呼叫,

python 獲取系統資訊—psutil安裝及使用

簡介 工具可以獲得到CPU, memory, disks, network這些資訊 psutil可以用來做系統監控,效能分析,程序管理。 支援的系統有Linux, Windows, OSX, FreeBSD and Sun Solaris,32和64位系統都支援,同時

python獲取系統時間

utc pytho 返回 datetime style 一個 pre rom das #!/usr/bin/python # -*- coding: UTF-8 -*- ‘‘‘ 格式符 說明 %a 星期的英文單詞的縮寫:如星期一, 則返回 Mon %A

Python爬蟲 - 爬取網頁文字資訊儲存(美文的爬取與儲存

 本篇文章所包含的主要內容:  使用requests模組實現對網頁以字串的形式儲存 使用open()、write()、close()函式實現檔案的開啟與寫入 使用if() 條件語句對所需要的文字資訊進行過濾以形成一個專用提取函式 &n

學習了一個月python,進行實戰一下:爬取文章標題和正文儲存的程式碼

爬取東方財富網文章標題和正文並儲存的程式碼。自己知道寫的很爛,不過主要是為了自己備忘,也為了以後回頭看看自己的爛作品,哈哈哈。 #!/usr/bin/env python # -*- coding:utf-8 -*- import requests from bs4 import B

Python的scrapy之爬取鏈家網房價資訊儲存到本地

因為有在北京租房的打算,於是上網瀏覽了一下鏈家網站的房價,想將他們爬取下來,並儲存到本地。 先看鏈家網的原始碼。。房價資訊 都儲存在 ul 下的li 裡面 ​   爬蟲結構: ​ 其中封裝了一個數據庫處理模組,還有一個user-agent池。。   先看mylian

Python3原生爬蟲獲取熊貓直播某一分類下的主播人氣儲存到Excel

import re import openpyxl from urllib import request # 斷點除錯 class Spider: url = 'https://www.panda.tv/cate/lol' root_pattern = '<di