python写个进程监控的脚本
来源:互联网 发布:对外承包工程数据库 编辑:程序博客网 时间:2024/06/05 05:49
废话不多说了,直接贴代码,大家配置文件都是喜欢用xml我不太喜欢,下面这个是自定义配置文件:
class_config.py#!/usr/bin/env python#coding:utf-8'''此处定义邮件的相关参数'''class Mail_conf(): sender = 'fyxichen@126.com' receiver = 'fyxichen@126.com' host = 'smtp.126.com' port = '25' user = 'fyxichen@126.com' 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-8import string,timeimport smtplibfrom email.mime.text import MIMETextfrom email.header import Headerfrom 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-8import psutil,timeimport subprocessfrom 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-8import psutilimport timeimport sysfrom optparse import OptionParserparser = 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-8import psutilimport timeimport sysdef 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,RAM_percent,Net_recv,Net_sent)) File.flush() File.close()if __name__ == "__main__": Sysinfo()
主程序就不写了,大家自己看情况用就好了,好久没写过python了写的不好大家见谅
都是一个功能一个文件,直接运行也可以组织起来调用
0 0
- python写个进程监控的脚本
- 用Python写个进程监控程序
- 写了个监控网络流量的脚本
- 自己写了个nagios 监控squid 的脚本。。
- 监控tomcat多个进程脚本
- 监控进程的shell脚本
- 简单的进程监控脚本
- 写了个查找关闭进程的脚本
- python nagios简单监控进程数脚本
- 使用python脚本来监控进程
- 迅雷下载最近经常异常崩溃,写个Python脚本自动监控重启之
- 写个python 脚本实现文件的递归拷贝
- 怎样开始写第一个基于python的selenium脚本
- python监控脚本的编写
- python 监控某个进程的进程数
- 一个监控指定进程的脚本
- 几个关于进程监控的脚本
- subprocess监控子进程的脚本执行
- Windows Phone 8.1中TextBox的不可忽略的特性和HyperlinkButton的认识
- 融易投3周年庆——欢乐送豪礼
- string和char*的区别以及const_cast<>()
- Android ContentProvider和Uri详解 (绝对全面)
- 操作系统--7Linux驱动程序编写基础
- python写个进程监控的脚本
- 抽象类与接口
- Android中logcat的介绍和使用
- 企业级数据备份
- Android-->完整项目 核心框架推荐(不定期更新)
- Java多线程系列--“基础篇”04之 synchronized关键字
- F2.微信支付签名工具
- 连载一:新的开始
- Linux下针对特定硬件外设锁定路径的方法