python3实现windows下同名进程监控
python3实现windows下同名进程监控,供大家参考,具体内容如下
公司老版的SVN服务器的svn服务经常意外关闭,需要写个简单的监控脚本监控一下;
首先多个SVN服务使用不同的端口,使用wmic命令查看所有SVN进程占用的端口以此来判断目标服务是否存活,wimc命令如下:
wmicprocesswherecaption=”svn.exe”getcommandline/value
然后用正则取出标准输出中的端口,用来比对;
defget_alive_port(program): """ 获取目标程序占用的端口 :paramprogram{string}目标进程 :returnportlist{list}目标进程占用的端口列表 """ cmd='wmicprocesswherecaption="%s"getcommandline/value'%program ps=subprocess.Popen(cmd,stdout=subprocess.PIPE,shell=True) portlist=[] whileTrue: out=ps.stdout.readline() ifout: out=out.decode("gb2312") templist=re.findall("[0-9]{4,5}",out) portlist.extend(templist) else: break returnportlist
使用监控后发现SVN服务不意外关闭了,但是SVN程序被访问久了占用过大内存需要监控一下借助psutil来实现;
defhowmuch_memory(program): """ 监控目标进程内存是否超过阀值,若超过则关闭 """ cmd='wmicprocesswherecaption="%s"getprocessid/value'%program ps=subprocess.Popen(cmd,stdout=subprocess.PIPE,shell=True) pids=[] whileTrue: out=ps.stdout.readline() ifout: out=out.decode("gb2312") templist=re.findall("[0-9]{3,6}",out) pids.extend(templist) else: break forpidinpids: try: p=psutil.Process(int(pid)) p_memory=p.memory_info() ifint(p_memory.rss/(1024*1024))>=200: p.kill() exceptExceptionase: print("出现如下错误:{0}".format(e)) continue
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。