python监控进程脚本_进程监控的python脚本

class_config.py

#!/usr/bin/env python

#coding:utf-8

'''此处定义邮件的相关参数'''

class Mail_conf():

sender = '[email protected]'

receiver = '[email protected]'

host = 'smtp.126.com'

port = '25'

user = '[email protected]'

passwd = '123456'

log_dir = 'sendmail_err_log'

'''此处定义监控程序以及启动路径,启动路径不能包含中文'''

#用法{程序名称:启动口令}

#配置重启日志名称,不能为空。

class ProgramPath():

Path = {'RTX.exe':'/home/admin','Foxmail.exe':'D:\Program Files (x86)\jisupdf','QQ.exe':'D:\Program Files (x86)\Tencent\QQ\Bin\qq.exe',}

Restart_Log_path = 'Restart_log_path'

SendMail.py

#!/usr/bin/env python

#coding:utf-8

import string,time

import smtplib

from email.mime.text import MIMEText

from email.header import Header

from class_config import Mail_conf

'''发送邮件类'''

def send_mail(Title,context):

msg = MIMEText(context,'plain','utf-8')

msg['Subject'] = Header(Title,'utf-8')

try:

smtp = smtplib.SMTP()

smtp.connect(Mail_conf.host,Mail_conf.port)

smtp.login(Mail_conf.user,Mail_conf.passwd)

smtp.sendmail(Mail_conf.sender,Mail_conf.receiver,msg.as_string())

smtp.quit()

except Exception,e:

Writelog = open(Mail_conf.log_dir,'ab')

log = '%s-->%s\n' % (time.strftime('%Y-%m-%d %H:%M:%S'),str(e))

print log

Writelog.write(log)

Writelog.close()

if __name__ == "__main__":

send_mail("Test Mail","这是一封测试邮件,更改邮箱配置在class_config.py中配置")

ProcessMoniter.py

#!/usr/bin/env python

#coding:utf-8

import psutil,time

import subprocess

from class_config import ProgramPath

def monitor():

Time = time.time()

log = open(ProgramPath.Restart_Log_path,'ab+')

log.write('****************%s****************\n' % time.strftime('%Y-%m-%d %H:%M:%S'))

log.close()

while True:

ProcessName = ProgramPath.Path.keys()

Process = psutil.process_iter()

for i in Process:

try:

if i.name() in ProcessName:

ProcessName.remove(i.name())

except Exception,e:

pass

for i in ProcessName:

try:

Restart = subprocess.Popen(ProgramPath.Path[i],shell=False)

except Exception,e:

err_log = '%s-->%s\n' % (time.strftime('%Y-%m-%d %H:%M:%S'),str(e).strip())

log = open(ProgramPath.Restart_Log_path,'ab+')

log.seek(-(len(str(e))),2)

if log.readline().strip() == str(e).strip():

if Time + 60 > time.time():

pass

else:

log.seek(0,2)

log.write(err_log)

log.close()

Time = time.time()

else:

log.seek(0,2)

log.write(err_log)

log.close()

Time = time.time()

time.sleep(2)

if __name__ == "__main__":

monitor()

Net_io.py

#!/usr/bin/env python

#coding:utf-8

import psutil

import time

import sys

from optparse import OptionParser

parser = OptionParser()

parser.add_option("-t","--time",dest="time",help="此参数可查看当前下载占的带宽,-t是测试时间",metavar="10")

def Net_io(s):

x = 0

sum = 0

while True:

if x >= s:

break

r1 = psutil.net_io_counters().bytes_recv

time.sleep(1)

r2 = psutil.net_io_counters().bytes_recv

y = r2 - r1

print "%.2f Kb/s" % (y / 1024.0)

sum += y

x += 1

result = sum / x

print "\033[1;32m %s秒内平均速度:%.2f Kb/s \033[1;m" % (x,result / 1024.0)

if __name__ == "__main__":

(options,args) = parser.parse_args()

if options.time:

Net_io(options.time)

else:

Net_io(10)

sysinfo.py

#!/usr/bin/env python

#coding:utf-8

import psutil

import time

import sys

def Sysinfo():

Boot_Start = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(psutil.boot_time()))

time.sleep(0.5)

Cpu_usage = psutil.cpu_percent()

RAM = int(psutil.virtual_memory().total/(1027*1024))

RAM_percent = psutil.virtual_memory().percent

Swap = int(psutil.swap_memory().total/(1027*1024))

Swap_percent = psutil.swap_memory().percent

Net_sent = psutil.net_io_counters().bytes_sent

Net_recv = psutil.net_io_counters().bytes_recv

Net_spkg = psutil.net_io_counters().packets_sent

Net_rpkg = psutil.net_io_counters().packets_recv

if __name__ == "__main__":

BFH = r'%'

print " \033[1;32m开机时间:%s\033[1;m" % Boot_Start

print " \033[1;32m当前CPU使用率:%s%s\033[1;m" % (Cpu_usage,BFH)

print " \033[1;32m物理内存:%dM\t使用率:%s%s\033[1;m" % (RAM,RAM_percent,BFH)

print "\033[1;32mSwap内存:%dM\t使用率:%s%s\033[1;m" % (Swap,Swap_percent,BFH)

print " \033[1;32m发送:%d Byte\t发送包数:%d个\033[1;m" % (Net_sent,Net_spkg)

print " \033[1;32m接收:%d Byte\t接收包数:%d个\033[1;m" % (Net_recv,Net_rpkg)

for i in psutil.disk_partitions():

print " \033[1;32m盘符: %s 挂载点: %s 使用率: %s%s\033[1;m" % (i[0],i[1],psutil.disk_usage(i[1])[3],BFH)

else:

File = open("sysinfo.log","ab+")

File.write("CPU:%s \tRAM:%s\tNet_recv:%d\tNet_sent:%d\r\n" % (Cpu_usage,Net_recv,Net_sent))

File.flush()

File.close()

if __name__ == "__main__":

Sysinfo()

主程序就不写了,大家自己看情况用就好了,好久没写过python了写的不好大家见谅

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值