bigdata/chapter2/mysite/myapp/utils.py

53 lines
1.6 KiB
Python

#coding=utf-8
import platform
import subprocess
import re
def get_execute_out(cmd):
return subprocess.getoutput(cmd)
def get_platform_info():
if platform.system()=='Linux':
ls = get_execute_out('top -bn 1 -i -c')
infos = ls.split('\n')
info = {}
m = re.match(r'top -.+?up\s+(.+?),', infos[0])
if m:
info["up_time"] = m.group(1)
m = re.match(r'Tasks:\s+(.+?)\s+total', infos[1])
if m:
info["tasks"] = m.group(1)
m = re.match(r'%Cpu\(s\):\s+(.+?)\s+us,\s+(.+?)\s+sy,.+?ni,\s+(.+?)\s+id,', infos[2])
if not m:
m = re.match(r'Cpu\(s\):\s+(.+?)%us,\s+(.+?)%sy,.+?ni,\s+(.+?)%id,', infos[2])
if m:
info["cpu_us"] = m.group(1)
info["cpu_sy"] = m.group(2)
info["cpu_id"] = m.group(3)
m = re.match(r'KiB Mem : (\d+)\s+total,\s+(\d+)\s+free,\s+(\d+)\s+used,', infos[3])
if not m:
m = re.match(r'Mem:\s+(\d+)k\s+total,\s+(\d+)k\s+used,\s+(\d+)k\s+free,', infos[3])
if m:
info["mem_total"] = m.group(1)
info["mem_free"] = m.group(2)
info["mem_used"] = m.group(3)
#硬盘使用
out = get_execute_out('df -h')
m = re.findall(r'\/dev\/vda1\s+(.+?)G\s+(.+?)G\s+(.+?)G', out)
if len(m)>0:
info['disk_total'] = m[0][0]
info['disk_used'] = m[0][1]
info['disk_freed'] = m[0][2]
return info
return {'up_time': '20:52', 'tasks': '127', 'cpu_us': '1.6', 'cpu_sy': '1.6', 'cpu_id': '96.9', 'mem_total': '12134268', 'mem_free': '5648868', 'mem_used': '4537556'}
if __name__ == "__main__":
print(get_platform_info())