#!/usr/bin/env python
#-*- encoding: utf-8 -*-
import commands
import os.path
import datetime
import locale
import time
import signal
ITEMC = 0
ITEMS = {
0 : {'time' : '', 'cpu' : '', 'item1' : '' ,
'item2' : '', 'item3' : '', 'item4' : '', 'item5' :
'', 'item6' : '', 'item7' : '', 'temp1' : '', 'temp2' :
''},
1 : {'time' : '', 'cpu' : '', 'item1' : '' ,
'item2' : '', 'item3' : '', 'item4' : '', 'item5' :
'', 'item6' : '', 'item7' : '', 'temp1' : '', 'temp2' :
''},
2 : {'time' : '', 'cpu' : '', 'item1' : '' ,
'item2' : '', 'item3' : '', 'item4' : '', 'item5' :
'', 'item6' : '', 'item7' : '', 'temp1' : '', 'temp2' :
''},
3 : {'time' : '', 'cpu' : '', 'item1' : '' ,
'item2' : '', 'item3' : '', 'item4' : '', 'item5' :
'', 'item6' : '', 'item7' : '', 'temp1' : '', 'temp2' :
''},
4 : {'time' : '', 'cpu' : '', 'item1' : '' ,
'item2' : '', 'item3' : '', 'item4' : '', 'item5' :
'', 'item6' : '', 'item7' : '', 'temp1' : '', 'temp2' :
''},
5 : {'time' : '', 'cpu' : '', 'item1' : '' ,
'item2' : '', 'item3' : '', 'item4' : '', 'item5' :
'', 'item6' : '', 'item7' : '', 'temp1' : '', 'temp2' :
''},
6 : {'time' : '', 'cpu' : '', 'item1' : '' ,
'item2' : '', 'item3' : '', 'item4' : '', 'item5' :
'', 'item6' : '', 'item7' : '', 'temp1' : '', 'temp2' :
''},
7 : {'time' : '', 'cpu' : '', 'item1' : '' ,
'item2' : '', 'item3' : '', 'item4' : '', 'item5' :
'', 'item6' : '', 'item7' : '', 'temp1' : '', 'temp2' :
''},
8 : {'time' : '', 'cpu' : '', 'item1' : '' ,
'item2' : '', 'item3' : '', 'item4' : '', 'item5' :
'', 'item6' : '', 'item7' : '', 'temp1' : '', 'temp2' :
''},
9 : {'time' : '', 'cpu' : '', 'item1' : '' ,
'item2' : '', 'item3' : '', 'item4' : '', 'item5' :
'', 'item6' : '', 'item7' : '', 'temp1' : '', 'temp2' :
''}
}
def
addItem(time,cpu,item1,item2,item3,item4,item5,item6,item7,temp1,temp2):
global ITEMC
# print "ITEMC:" + str(ITEMC)
if ITEMC == len(ITEMS):
shiftItem()
ITEMC = ITEMC-1
ITEMS[ITEMC]['time'] = time
ITEMS[ITEMC]['cpu'] = cpu
ITEMS[ITEMC]['item1'] = item1
ITEMS[ITEMC]['item2'] = item2
ITEMS[ITEMC]['item3'] = item3
ITEMS[ITEMC]['item4'] = item4
ITEMS[ITEMC]['item5'] = item5
ITEMS[ITEMC]['item6'] = item6
ITEMS[ITEMC]['item7'] = item7
ITEMS[ITEMC]['temp1'] = temp1
ITEMS[ITEMC]['temp2'] = temp2
ITEMC = ITEMC + 1
for i in ITEMS:
# print "i=" + str(i),
print ITEMS[i]['time'],
print ITEMS[i]['cpu'],
print ITEMS[i]['item1'],
print ITEMS[i]['item2'],
print ITEMS[i]['item3'],
print ITEMS[i]['item4'],
print ITEMS[i]['item5'],
print ITEMS[i]['item6'],
print ITEMS[i]['item7'],
print ITEMS[i]['temp1'],
print ITEMS[i]['temp2'],
print
def shiftItem():
for i in range(len(ITEMS)-1):
ITEMS[i]['time'] = ITEMS[i+1]['time']
ITEMS[i]['cpu'] = ITEMS[i+1]['cpu']
ITEMS[i]['item1'] = ITEMS[i+1]['item1']
ITEMS[i]['item2'] = ITEMS[i+1]['item2']
ITEMS[i]['item3'] = ITEMS[i+1]['item3']
ITEMS[i]['item4'] = ITEMS[i+1]['item4']
ITEMS[i]['item5'] = ITEMS[i+1]['item5']
ITEMS[i]['item6'] = ITEMS[i+1]['item6']
ITEMS[i]['item7'] = ITEMS[i+1]['item7']
ITEMS[i]['temp1'] = ITEMS[i+1]['temp1']
ITEMS[i]['temp2'] = ITEMS[i+1]['temp2']
def handler(signum, frame):
global EndFlag
EndFlag = 0
def ProcessStats():
global LoadAvg
global CpuFreq
global SocTemp
global PMICTemp
global CPULoad
global SystemLoad
global UserLoad
global NiceLoad
global IOWaitLoad
global IrqCombinedLoad
LoadAvg = commands.getoutput("cut -f1 -d ' '
</proc/loadavg")
CpuFreq = commands.getoutput("awk '{printf
(\"%0.0f\",$1/1000); }'
</sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq")
Sensors="/etc/armbianmonitor/datasources/"
SocTemp = 0
path=Sensors + "soctemp"
if os.path.isfile(path):
SocTemp = commands.getoutput("cat " +
path)
PMICTemp = 0
path=Sensors + "pmictemp"
if os.path.isfile(path):
PMICTemp = commands.getoutput("awk
'{printf (\"%0.1f\",$1/1000); }' <" + path)
CpuStat= commands.getoutput ("awk -F\" \"
'{print$1\"\t\"$2\"\t\"$3\"\t\"$4\"\t\"$5\"\t\"$6}'
</tmp/cpustat")
list = CpuStat.split()
CPULoad=list[0]
SystemLoad=list[1]
UserLoad=list[2]
NiceLoad=list[3]
IOWaitLoad=list[4]
IrqCombinedLoad=list[5]
def header():
Sensors="/etc/armbianmonitor/datasources/"
print "Stop monitoring using [ctrl]-[c]"
print
"Time
CPU load %cpu %sys %usr %nice %io %irq",
path=Sensors + "soctemp"
if os.path.isfile(path):
print " CPU",
path=Sensors + "pmictemp"
if os.path.isfile(path):
print " PMIC",
print
def display():
ProcessStats()
d = datetime.datetime.today()
time = '{0:02d}:{1:02d}:{2:02d}:'.format(d.hour,
d.minute, d.second)
# print time,
cpu = '{0:>4s}MHz'.format(CpuFreq)
# print cpu,
item1 = '{0:>5s}'.format(LoadAvg)
# print item1,
item2 = '{0:>3s}%'.format(CPULoad)
# print item2,
item3 = '{0:>3s}%'.format(SystemLoad)
# print item3,
item4 = '{0:>3s}%'.format(UserLoad)
# print item4,
item5 = '{0:>3s}%'.format(NiceLoad)
# print item5,
item6 = '{0:>3s}%'.format(IOWaitLoad)
# print item6,
item7 = '{0:>3s}%'.format(IrqCombinedLoad)
# print item7,
temp1=''
if SocTemp > 0:
temp1 = '{0:>4s}°C'.format(SocTemp)
# print temp1,
temp2=''
if PMICTemp > 0:
temp2 =
'{0:>4s}°C'.format(MPICTTemp)
# print temp2,
# print
addItem(time,cpu,item1,item2,item3,item4,item5,item6,item7,temp1,temp2)
def main():
global EndFlag
EndFlag = 1
signal.signal(signal.SIGINT, handler)
# header()
while(EndFlag):
header()
display()
time.sleep(5)
if __name__ == "__main__":
main()
|