python监控linux性能以及进程消耗的性能
- # -*- coding: utf-8 -*-
- """
- Created on Tue Jun 10 10:20:13 2014
- @author: lifeix
- """
- from collections import OrderedDict
- import time
- import os
- def cpuinfo():
- lines = open('/proc/stat').readlines()
- for line in lines:
- ln = line.split()
- if ln[0].startswith('cpu'):
- return ln;
- return []
- W = cpuinfo()
- one_cpuTotal=long(W[1])+long(W[2])+long(W[3])+long(W[4])+long(W[5])+long(W[6])+long(W[7])
- one_cpuused=long(W[1])+long(W[2])+long(W[3])
- def CPUinfo():
- ''' Return the information in /proc/CPUinfo
- as a dictionary in the following format:
- CPU_info['proc0']={...}
- CPU_info['proc1']={...}
- '''
- CPUinfo=OrderedDict()
- procinfo=OrderedDict()
- nprocs = 0
- f = open('/proc/cpuinfo')
- for line in f.readlines():
- if not line.strip():
- # end of one processor
- CPUinfo['proc%s' % nprocs] = procinfo
- nprocs=nprocs+1
- # Reset
- procinfo=OrderedDict()
- else:
- if len(line.split(':')) == 2:
- procinfo[line.split(':')[0].strip()] = line.split(':')[1].strip()
- else:
- procinfo[line.split(':')[0].strip()] = ''
- return CPUinfo
- def meminfo():
- ''' Return the information in /proc/meminfo
- as a dictionary '''
- meminfo=OrderedDict()
- f = open('/proc/meminfo')
- for line in f.readlines():
- meminfo[line.split(':')[0]] = line.split(':')[1].strip()
- return meminfo
- f = open("sysinfo.log",'a')
- def logSysInfo(cpu,mem,line):
- f.write('\ncpu:%s -------mem: %s------mongocpu:%s'%(cpu,mem,line))
- f.flush();
- def process_info():
- #获取drm_processes 的进程号
- textlist = os.popen('top -bcn 1 -p 12023').readlines()
- line = ''
- for t in textlist:
- if t.find('12023'):
- line = t
- line = line.split(' ')
- #此处的值依照自己的需求去取
- return line[15]
- if __name__=='__main__':
- CPUinfo = CPUinfo()
- for processor in CPUinfo.keys():
- print(CPUinfo[processor]['model name'])
- f.write("cpu:%s"%CPUinfo[processor]['model name'])
- #meminfo = meminfo()
- #print('Total memory: {0}'.format(meminfo['MemTotal']))
- try:
- while True:
- line = process_info()
- time.sleep(2)
- mi = meminfo()
- print('Free memory: {0}'.format(mi['MemFree']))
- W = cpuinfo()
- two_cpuTotal=long(W[1])+long(W[2])+long(W[3])+long(W[4])+long(W[5])+long(W[6])+long(W[7])
- two_cpuused=long(W[1])+long(W[2])+long(W[3])
- cpuused=float(two_cpuused-one_cpuused)/(two_cpuTotal-one_cpuTotal)
- print ('%.2f%%'%(cpuused*100))
- print line
- cpu = '%.2f%%'%(cpuused*100)
- logSysInfo(cpu,format(mi['MemFree']),line)
- except KeyboardInterrupt, e:
- print ("\ncpumonit exited")
- f.close()
- f.close()
python监控linux性能以及进程消耗的性能的更多相关文章
- python实现Linux启动守护进程
python实现Linux启动守护进程 DaemonClass.py代码: #/usr/bin/env python # -*- coding: utf-8 -*- import sys import ...
- 第6章:使用Python监控Linux系统
1.Python编写的监控工具 1).多功能系统资源统计工具dstat dstat是一个用Python编写的多功能系统资源统计工具,用来取代Linux下的vmstat,iostat,netstat和i ...
- 使用Python监控Linux系统
一.Python编写的监控工具 一.多功能系统资源统计工具dstat 1.dstat介绍 dstat是一个用Python语言实现的多功能系统资源统计工具,用来取代Linux下的vmstat.iosta ...
- NetHogs监控Linux的每个进程流量
在日常运维环境中,我们肯定会遇到以下这种需求: 1.网络流量异常,不知道是哪个程序的流量爆涨? 2.日常需要监控网络实时的流量进去数据 面试装逼系列|这篇文章,让运维监控不再成为你的短板! 学会这 1 ...
- linux ps 按进程消耗内存资源大小排序
linux ps 关于sort的解释 --sort spec specify sorting order. Sorting syntax is [+|-]key[,[+|-]key[,...]] Ch ...
- python监控linux内存并写入mongodb
(需要安装psutil 用来获取服务器资源,以及pymongo驱动)#pip install psutil #pip install pymongo #vim memory_monitory.py 文 ...
- Linux 不同方法查看进程消耗CPU IO 等
1.用top命令指定固定的PID top -p 10997 查询指定进程的PID ps -ef | grep zookeeper jim 10997 1959 0 12月14 pts/2 00:00: ...
- 用python监控Linux,CPU,内存,硬盘
#!/usr/local/bin/python3.5 #coding:utf-8 import mailll, linecache, re, socket, os, time hostname = s ...
- linux 创建守护进程的相关知识
linux 创建守护进程的相关知识 http://www.114390.com/article/46410.htm linux 创建守护进程的相关知识,这篇文章主要介绍了linux 创建守护进程的相关 ...
随机推荐
- 请用Java设计一个Least Recently Used (LRU) 缓存
LRU介绍:LRU是Least Recently Used的缩写,即最少使用页面置换算法,是为虚拟页式存储管理服务的, 思路介绍: 能够使用两个标准的数据结构来实现.Map和Queue.由于须要支持多 ...
- [IOS]mac以太网连接
今天玩了一下苹果一体机.感觉还是蛮不错的,只是.就是用以太网连接的时候遇到了一点问题.用这篇文章记录一下: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/ ...
- Project Euler:Problem 37 Truncatable primes
The number 3797 has an interesting property. Being prime itself, it is possible to continuously remo ...
- web后台知识点整理
五.JEE 适用于创建server端的大型的软件服务系统 1. JEE : JAVA PLATFORM ENTERPRISE DEDITON 2.是一个规范集.技术集.框架集(API集) 一种技 ...
- [SCOI 2007] 排列
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1072 [算法] 状压DP [代码] #include<bits/stdc++. ...
- golang sftp传输文件
之前有一篇介绍如何使用 golang 通过SSH协议来执行远程命令:golang执行远程命令 同样,通过SSH协议也可以使用 golang 来远程传输文件. 除了 SSH 的库,为了传输文件,还需要用 ...
- POJ 2446 匈牙利算法
题意: 思路: 二分图匹配... // by SiriusRen #include <cmath> #include <cstdio> #include <cstring ...
- ubuntu下安装VMware
1 用apt-get命令更新系统 loginname@localhost:~$ sudo apt-get update 2 从官方网站下载Workstation11(Bundle Script) lo ...
- Spring《六》管理Bean
BeanWrapper BeanFactory ApplicationContext 1.通常情况下使用BeanFactory.ApplicationContext 2.ApplicationCont ...
- 微信小程序分享朋友圈的实现思路与解决办法
实现思路 那么既然小程序没有分享到朋友圈的api,我们怎么实现分享到朋友圈呢,下面我介绍一下实现思路. 既然没有捷径,那就走复杂一点的路线,那就是需要用户手动分享到朋友圈,问题又来了,用户手动分享的话 ...