python3实现windows下同名进程监控

本文介绍了一个使用Python编写的简单脚本,用于监控Windows环境下SVN服务的运行状态及内存占用情况。通过wmic命令获取进程信息,并利用psutil监控内存使用,确保SVN服务稳定运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python3实现windows下同名进程监控

公司老版的SVN服务器的svn服务经常意外关闭,需要写个简单的监控脚本监控一下;

首先多个SVN服务使用不同的端口,使用wmic命令查看所有SVN进程占用的端口以此来判断目标服务是否存活,wimc命令如下:
wmic process where caption=”svn.exe” get commandline /value
然后用正则取出标准输出中的端口,用来比对;

def get_alive_port(program):
    """
        获取目标程序占用的端口
        :param program {string} 目标进程
        :return portlist {list} 目标进程占用的端口列表
    """
    cmd = 'wmic process where caption="%s" get commandline /value' % program
    ps = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
    portlist = []
    while True:
        out = ps.stdout.readline()
        if out:
            out = out.decode("gb2312")
            templist = re.findall("[0-9]{4,5}", out)
            portlist.extend(templist)
        else:
            break
    return portlist

使用监控后发现SVN服务不意外关闭了,但是SVN程序被访问久了占用过大内存需要监控一下借助psutil来实现;

def howmuch_memory(program):
    """
        监控目标进程内存是否超过阀值,若超过则关闭
    """
    cmd = 'wmic process where caption="%s" get processid /value' % program
    ps = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
    pids = []
    while True:
        out = ps.stdout.readline()
        if out:
            out = out.decode("gb2312")
            templist = re.findall("[0-9]{3,6}", out)
            pids.extend(templist)
        else:
            break
    for pid in pids:
        try:
            p = psutil.Process(int(pid))
            p_memory = p.memory_info()
            if int(p_memory.rss / (1024 * 1024)) >= 200:
                p.kill()
        except Exception as e:
            print("出现如下错误:{0}".format(e))
            continue
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值