环境:
ubuntu 14.04+python2.7
功能说明:
按时间间隔持续进行cpu占用率的检测,当cpu负载超过%60时,进行提示,并且可以根据进程名字杀死该进程
代码:
<span style="font-size:18px;">#coding:utf-8
import os
import time
print "cpu dedecting"
flag=True
while flag:
os.system(r"top -n 1 >file1.txt")#运行top命令,将结果存入file1.txt
os.system(r"grep 'Cpu(s)' file1.txt >file3.txt")#将cpu运行比列所在的行提取出来,放入file3.txt
import Tkinter
import tkMessageBox
def show():
tkMessageBox.showinfo(title='warning', message='your cpu is overload,please kill some unnessary processes')
file3=open("file3.txt",'r')
for line in file3.readlines():
a=line.strip()
for line2 in a.split(" ")[1:2]:#对于每一行,提取出cpu占用的百分比
if float(line2)>60: #将str类型强制转换成float,并进行比较,超出弹框
show()
print "目前正在运行的进程:\n"
os.system("ps")
os.system("ps 1> file5.txt")
kill_one=raw_input("input the process you want to kill\n")
#os.system(r"grep "+kill_one +"file5.txt >file6.txt")
str2="grep "+kill_one +" file5.txt >file6.txt"
print str2
os.system(str2)
file6=open("file6.txt",'r')
for line3 in file6.readlines():
b=line3.strip()
for line4 in b.split(" ")[0:1]:
str6="kill -9 " +line4
os.system(str6)
print str6
break
file3.close()
print "END"
time.sleep(20)
</span>
自我总结:
这个脚本很憋足,好歹是实现了简易功能,但是不足的地方是:1使用不便,应该是加上图像化操作界面,我学学着一块,后期完成一个easy+的任务管理器样子的图形界面 2.就是在python中调用shell命令,总感觉怪怪的,但是暂时没有想到更好的解决办法。
遇到的问题:
在编程过程中有个问题,就是在提取列的时候,本来打算用awk但是,直接使用awk进行列提取没有问题,在Python中调用就出现问题,提醒出乎意料的字符'.',查资料也没弄明白~此路不通记载下来。后期就使用split函数进行列提取。