python获取linux系统信息(内存、cpu、负载、网络流量、硬盘)

发布时间:2020-09-05编辑:脚本学堂
python代码取得内存、cpu、系统负载、网络流量、硬盘使用率、硬盘空间等信息,python检测linux系统信息的多个例子。

1、内存信息 / meminfo
返回dict
 

复制代码 代码示例:
#!/usr/bin/env python 
def memory_stat(): 
mem = {} 
f = open("/proc/meminfo") 
lines = f.readlines() 
f.close() 
for line in lines: 
if len(line) < 2: continue 
name = line.split(':')[0] 
var = line.split(':')[1].split()[0] 
mem[name] = long(var) * 1024.0 
mem['MemUsed'] = mem['MemTotal'] - mem['MemFree'] - mem['Buffers'] - mem['Cached'] 
return mem 

2、CPU信息 / cpuinfo
返回list,每核心一dict
 

复制代码 代码示例:
#!/usr/bin/env python 
def cpu_stat(): 
cpu = [] 
cpuinfo = {} 
f = open("/proc/cpuinfo") 
lines = f.readlines() 
f.close() 
for line in lines: 
if line == 'n': 
cpu.append(cpuinfo) 
cpuinfo = {} 
if len(line) < 2: continue 
name = line.split(':')[0].rstrip() 
var = line.split(':')[1] 
cpuinfo[name] = var 
return cpu 

3、负载信息 / loadavg
返回dict
 

复制代码 代码示例:
#!/usr/bin/env python 
def load_stat(): 
loadavg = {} 
f = open("/proc/loadavg") 
con = f.read().split() 
f.close() 
loadavg['lavg_1']=con[0] 
loadavg['lavg_5']=con[1] 
loadavg['lavg_15']=con[2] 
loadavg['nr']=con[3] 
loadavg['last_pid']=con[4] 
return loadavg 

4、运转时间 / Uptime
返回dict
 

复制代码 代码示例:
#!/usr/bin/env python 
def uptime_stat(): 
uptime = {} 
f = open("/proc/uptime") 
con = f.read().split() 
f.close() 
all_sec = float(con[0]) 
MINUTE,HOUR,DAY = 60,3600,86400 
uptime['day'] = int(all_sec / DAY ) 
uptime['hour'] = int((all_sec % DAY) / HOUR) 
uptime['minute'] = int((all_sec % HOUR) / MINUTE) 
uptime['second'] = int(all_sec % MINUTE) 
uptime['Free rate'] = float(con[1]) / float(con[0]) 
return uptime 

5、获取网卡流量信息 /proc/net/dev
返回dict,单位byte
 

复制代码 代码示例:
#!/usr/bin/env python 
def net_stat(): 
net = [] 
f = open("/proc/net/dev") 
lines = f.readlines() 
f.close() 
for line in lines[2:]: 
con = line.split() 
"""
intf = {}
intf['interface'] = con[0].lstrip(":")
intf['ReceiveBytes'] = int(con[1])
intf['ReceivePackets'] = int(con[2])
intf['ReceiveErrs'] = int(con[3])
intf['ReceiveDrop'] = int(con[4])
intf['ReceiveFifo'] = int(con[5])
intf['ReceiveFrames'] = int(con[6])
intf['ReceiveCompressed'] = int(con[7])
intf['ReceiveMulticast'] = int(con[8])
intf['TransmitBytes'] = int(con[9])
intf['TransmitPackets'] = int(con[10])
intf['TransmitErrs'] = int(con[11])
intf['TransmitDrop'] = int(con[12])
intf['TransmitFifo'] = int(con[13])
intf['TransmitFrames'] = int(con[14])
intf['TransmitCompressed'] = int(con[15])
intf['TransmitMulticast'] = int(con[16])
""" 
intf = dict( 
zip( 
( 'interface','ReceiveBytes','ReceivePackets', 
  'ReceiveErrs','ReceiveDrop','ReceiveFifo', 
  'ReceiveFrames','ReceiveCompressed','ReceiveMulticast', 
  'TransmitBytes','TransmitPackets','TransmitErrs', 
  'TransmitDrop', 'TransmitFifo','TransmitFrames', 
  'TransmitCompressed','TransmitMulticast' ), 
( con[0].rstrip(":"),int(con[1]),int(con[2]), 
  int(con[3]),int(con[4]),int(con[5]), 
  int(con[6]),int(con[7]),int(con[8]), 
  int(con[9]),int(con[10]),int(con[11]), 
  int(con[12]),int(con[13]),int(con[14]), 
  int(con[15]),int(con[16]), ) 


 
net.append(intf) 
return net 

6、磁盘空间使用
使用内置python内置函数,返回dict,单位byte
 

复制代码 代码示例:
#!/usr/bin/env python 
def disk_stat(): 
import os 
hd={} 
disk = os.statvfs("/") 
hd['available'] = disk.f_bsize * disk.f_bavail 
hd['capacity'] = disk.f_bsize * disk.f_blocks 
hd['used'] = disk.f_bsize * disk.f_bfree 
return hd