Python 获取CentOS7的内存使用率并写入mysql

由于Centos7和6的系统变化挻大的,所以先看看Centos7的内存信息是怎么样的。

系统版本:

[[email protected] ~]# cat /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core) 
[[email protected] ~]#

查看内存信息:其实只需要关注前5行即可;

[[email protected] ~]# cat /proc/meminfo 
MemTotal:        2049248 kB
MemFree:           85408 kB
MemAvailable:    1061812 kB
Buffers:          138044 kB
Cached:           885028 kB
SwapCached:        33308 kB
Active:           881088 kB
Inactive:         832516 kB
Active(anon):     315948 kB
Inactive(anon):   375464 kB
Active(file):     565140 kB
Inactive(file):   457052 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:        524284 kB
SwapFree:         377836 kB
Dirty:                24 kB
Writeback:             0 kB
AnonPages:        659500 kB
Mapped:            71544 kB
Shmem:               876 kB
Slab:             160772 kB
SReclaimable:     123148 kB
SUnreclaim:        37624 kB
KernelStack:        7408 kB
PageTables:        20580 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     1548908 kB
Committed_AS:    2998548 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      156648 kB
VmallocChunk:   34359541760 kB
HardwareCorrupted:     0 kB
AnonHugePages:    434176 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       73664 kB
DirectMap2M:     2023424 kB
DirectMap1G:           0 kB
[[email protected] ~]# 

[[email protected] ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           2001         762          81           0        1156        1035
Swap:           511         142         369
[[email protected] ~]#

内存使用率的计算:mem_used=MemTotal-MemFree-Buffers

python 代码:

#/usr/bin/env python                                                                
import time                                                                          
import pymysql as mysql                                                              
db = mysql.connect(user='dba',passwd='123456',db='memory',host='localhost')         
db.autocommit(True)                                                                  
cur = db.cursor()                                                                    
                                                                                     
def getMem():                                                                        
    f = open('/proc/meminfo')                                                        
    total = int(f.readline().split()[1])                                             
    free = int(f.readline().split()[1])                                              
    MemAvailable = f.readline().split()                                              
    cache = int(f.readline().split()[1])                                             
    mem_use = total-free-cache                                                       
    t = time.time()                                                                  
    sql = 'insert into memory(memory,time) values(%s,%s)' %(mem_use/1024,t)          
    cur.execute(sql)                                                                 
    #print mem_use                                                                   
    print ('ok')
                                                                     
while True:                                                                          
    time.sleep(1)                                                                    
    getMem()

安装pymysql模块

pip install pymysql

创建数据库以及表:

MariaDB [(none)]> create database memory charset=utf8;
MariaDB [(none)]> use memory;
MariaDB [(none)]> CREATE TABLE `memory` (    `memory` int(11) DEFAULT NULL,    `time` int(11) DEFAULT NULL  ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

授权用户
MariaDB [(none)]> grant all on *.* to [email protected]'localhost' identified by '123456';
MariaDB [(none)]> flush privileges;

执行python代码,每隔一秒就会打印一个ok到终端,然后在Mysql里查询一下;

MariaDB [memory]> select * from memory limit 5;
+--------+------------+
| memory | time       |
+--------+------------+
|   1775 | 1513906229 |
|   1775 | 1513906230 |
|   1775 | 1513906231 |
|   1775 | 1513906232 |
|   1775 | 1513906233 |
+--------+------------+
5 rows in set (0.00 sec)

注:Mysql的表只用了两个字段,一个内存使用率,这个值是以兆为单位的,另一个就是时间了。

MariaDB [(none)]> use memory;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [memory]> show create table memory\G
*************************** 1. row ***************************
       Table: memory
Create Table: CREATE TABLE `memory` (
  `memory` int(11) DEFAULT NULL,
  `time` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
1 row in set (0.00 sec)

MariaDB [memory]>
时间: 2024-10-12 01:20:36

Python 获取CentOS7的内存使用率并写入mysql的相关文章

Python 获取接口数据,解析JSON,写入文件

Python 获取接口数据,解析JSON,写入文件 用于练手的例子,从国家气象局接口上获取JSON数据,将它写入文件中,并解析JSON: 总的来说,在代码量上,python代码量要比java少很多.而且python看起来更直观一些: 以下是代码: import types import urllib2 import json duan ="--------------------------" #在控制台断行区别的 #利用urllib2获取网络数据 def registerUrl():

python获取CPU,内存,磁盘使用率

#!/usr/bin/env python # coding:utf-8 import psutil total_cpu=psutil.cpu_times().user+psutil.cpu_times().idle user_cpu=psutil.cpu_times().user cpu_syl=user_cpu/total_cpu*100 mem = psutil.virtual_memory()   #使用psutil.virtual_memory方法获取内存完整信息 mem_total=

python 获取linux的内存信息

1.安装psutil源码 https://pypi.python.org/pypi?:action=display&name=psutil#downloads 找到psutil-5.2.2.tar.gz 点击即可下载 shell # tar xzvf psutil-5.2.2.tar.gz shell # cd psutil-5.2.2 shell # python setup.py install 2.使用psutil获取内存信息 终端输入python shell # python Pytho

python获取系统基础性能参数实现写入文件

#!/usr/bin/env python # coding:utf-8 import psutil import time import sys from optparse import OptionParser from datetime import date,datetime import xlwt import xlsxwriter f = open("D:/1.txt", 'w+') parser = OptionParser() parser.add_option(&qu

第一篇博客(python爬取小故事网并写入mysql)

前言: 这是一篇来自整理EVERNOTE的笔记所产生的小博客,实现功能主要为用广度优先算法爬取小故事网,爬满100个链接并写入mysql,虽然CS作为双学位已经修习了三年多了,但不仅理论知识一般,动手能力也很差,在学习的空余时间前前后后DEBUG了很多次,下面给出源代码及所遇到的BUG. 本博客参照代码及PROJECT来源:http://kexue.fm/archives/4385/ 源代码: 1 import requests as rq 2 import re 3 import codecs

使用python获取CPU和内存信息的思路与实现(linux系统)

linux里一切皆为文件,在linux/unix的根目录下,有个/proc目录,这个/proc 是一种内核和内核模块用来向进程(process)发送信息的机制(所以叫做"/proc"),这个伪文件系统允许与内核内部数据结构交互,获取有关进程的有用信息,在运行中(on the fly)改变设置(通过改变内核参数).与其他文件系统不同,/proc 存在于内存而不是硬盘中.proc 文件系统提供的信息如下: ?进程信息:系统中的任何一个进程,在 proc 的子目录中都有一个同名的进程 ID,

python执行shell获取硬件参数写入mysql

最近要获取服务器各种参数,包括cpu.内存.磁盘.型号等信息.试用了Hyperic HQ.Nagios和Snmp,它们功能都挺强大的,但是于需求不是太符,亦或者太heavy. 于是乎想到用python执行shell获取这些信息,python执行shell脚本有以下三种方法: 1. os.system() os.system('ls')#返回结果0或者1,不能得到命令的输出 2. os.popen() output = os.popen('ls') print output.read()#打印出的

获取Windows操作系统的CPU使用率以及内存使用率

阅读目录 声明定义 引用lib文件 获取操作系统CPU使用率 获取操作系统内存大小 获取操作系统内存使用率 此功能参考了ProcessHacker项目的代码. 回到顶部 声明定义  Collapse typedef struct _UINT64_DELTA { ULONG64 Value; ULONG64 Delta; } UINT64_DELTA, *PUINT64_DELTA; typedef struct _UINTPTR_DELTA { ULONG_PTR Value; ULONG_PT

Linux下java获取CPU、内存、磁盘IO、网络带宽使用率

一.CPU 使用proc文件系统,"proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以文件系统的方式为访问系统内核数据的操作提供接口.用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数." 从/proc文件系统获取cpu使用情况:    cat /proc/stat 在Linux的内核中,有一个全 局变量:Jiffies. Jiffies代表时间.它的单位随硬件平台的不同而不同.系统里定义了一个常数HZ,代表每秒种最小时间间隔的数目.这样ji