精华内容
下载资源
问答
  • python监控进程脚本

    2020-12-25 06:10:28
    本文实例为大家分享了python监控进程脚本的具体代码,供大家参考,具体内容如下 原理: 监控一个指定进程,每隔5秒钟获取其CPU、内存使用量超过60%即kill掉该进程,获取其句柄数,超过300也kill掉该进程 运行环境是...
  • 这篇文章主要介绍了基于python监控程序是否关闭,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 监控一个服务系exe在他关闭后打印,原想可以使用win32process....
  • python监控linux

    2021-02-17 22:39:02
    python 编写的监控工具 系统资源统计 dstat 用来取代 vmstat iostat netstat ifstat # centos 安装 yum install dstat # 如何使用 dstat -h # 输出到文件 dstat -a --output out.csv 交互式监控...

    python 编写的监控工具

    • 系统资源统计 dstat

      • 用来取代 vmstat iostat netstat ifstat
          # centos 安装
          yum install dstat
          
          # 如何使用
          dstat -h
          
          # 输出到文件
          dstat -a --output out.csv
      
    • 交互式监控工具 glances

      # 安装
      pip install glances
      yum install glances
      # 开启
      glances
      
      # web开启 依赖 bottle
      glances -w
      
      # 导出 xsv
      glaces --
      

    使用python打造自己的监控工具

    • linux /proc 介绍

      • 一个伪文件系统
      • 查看文件详情
          man proc
      
      • 数字命名的文件夹里存的是进程信息
      • proc常用文件介绍
        • loadavg 系统负载
        • meminfo 内存
        • diskstats 磁盘信息
        • net/dev 网络信息
        • filesystems 文件系统
        • cpuinfo
        • cmdline
        • devices
        • mounts
        • partitions
        • uptime
        • version
        • vmstat
      • 进程目录下常用文件介绍
        • cmdline
        • cwd
        • exe
        • environ
        • fd
        • limits
        • tasks
      • 利用proc 找到被删除的文件

    开源库监控 linux

    • psutil

          import psutil
          
          # cpu
          psutil.cpu_count() # 逻辑cpu数量
          
          psutil.cpu_count(logical=False) # 物理cpu数量
          
          psutil.cpu_percent()
          
          psutil.cpu_times()
          
          psutil.cpu_times_percent()
          
          psutil.cpu_stats()
          
          # 内存
          psutil.virtual_memory()
          
          psutil.swap_memory()
          
          # 磁盘
          psutil.disk_partitions()
          
          psutil.disk_usage()
          
          psutil.disk_io_counters()
          
          # 网络
          psutil.net_io_counter()
          
          psutil.net_connections()
          
          psutil.net_if_addrs()
          
          psutil.net_if_stats()
          
          # 其它
          psutil.users()
          
          psutil.boot_time()
          
          # 进程管理
          process = psutil.Process(1)
          
          process.cmdline()
          
          process.name()
          
          process.cmdline()
          
          process.create_time()
          
          process.num_fds()
          
          process.threads()
          
          process.is_runing()
          
          process.send_signal()
          
          process.kill()
          
          process.terminate()
          
          psutil.pids()
          
          psutil.process_iter()
      
    • 监控文件系统变化 pyinotify

      • 要求 linux 2.6.13 以上
      • 命令行
        python -m pyinotify /tmp
        
      • api
            import pyinotify
            
            wm = pyinotify.WathchManager()
            
            mask = pyinotify.IN_DELETE | pyinotify。IN_CREATE
            
            class EnentHandler(pyinotify.ProcessEvent):
                def process_IN_CREATE(self, event)
                    print('Creating:', event.pathname)
                    
                def process_IN_DELETE(self, event):
                    print('Deleting', event.pathname)
            
            handler = EnentHandler()
            notifier = pyinotify.Notifier(wm, handler)
            wm.add_watch('/tmp', mask, rec=True)
            
            notifier.loop()
        
    展开全文
  • python 监控进程

    千次阅读 2018-08-21 14:40:36
    print(subprocess.Popen([r'E:\UE_4.19\Engine\Binaries\Win64\UE4Editor.exe'])) timer_start() if __name__ == '__main__': # print(get_process_count('UE4Editor.exe')) timer_start() while True: time...
    import threading
    import time
    import os
    import subprocess
    
    
    def get_process_count(imagename):
        p = os.popen('tasklist /FI "IMAGENAME eq %s"' % imagename)
        return p.read().count(imagename)
    
    
    def timer_start():
        t = threading.Timer(1, watch_func, ("is running...",))
        t.start()
    
    
    def watch_func(msg):
        print("I'm watch_func,", msg)
        if get_process_count('UE4Editor.exe') == 0:
            print(subprocess.Popen([r'E:\UE_4.19\Engine\Binaries\Win64\UE4Editor.exe']))
        timer_start()
    
    
    if __name__ == '__main__':
        # print(get_process_count('UE4Editor.exe'))
        timer_start()
        while True:
            time.sleep(1)
    
    展开全文
  • python监控windows的CPU,Memory,Disk

    千次阅读 2015-08-28 15:18:08
    python的psutil模块可以跨平台监控linux、windows、mac等,于是使用python监控脚本,然后利用py2exe工具将其打包成exe后,直接将其放到windows下直接运行即可。 1.安装python2.7(32位) 在...

    有一批windows系统需要监控,无论是zabbix、nagios都需要安装相关插件,操作起来比较麻烦。

    python的psutil模块可以跨平台监控linux、windows、mac等,于是使用python写监控脚本,然后利用py2exe工具将其打包成exe后,直接将其放到windows下直接运行即可。

    1.安装python2.7(32位)

    在https://www.python.org/downloads/ 下载适合系统的python

    安装后修改环境变量,“系统变量”----PATH最后添加“C:\Python27”

    2.安装psutil模块(32位)

    在https://pypi.python.org/pypi/psutil 下载适合系统的psutil

    在安装前需要先注册python2.7,否则会报错

    编辑注册脚本register.py

    #
    # script to register Python 2.0 or later for use with win32all
    # and other extensions that require Python registry settings
    #
    # written by Joakim Loew for Secret Labs AB / PythonWare
    #
    # source:
    # http://www.pythonware.com/products/works/articles/regpy20.htm
    #
    # modified by Valentine Gogichashvili as described in http://www.mail-archive.com/distutils-sig@python.org/msg10512.html
     
    import sys
     
    from _winreg import *
     
    # tweak as necessary
    version = sys.version[:3]
    installpath = sys.prefix
     
    regpath = "SOFTWARE\\Python\\Pythoncore\\%s\\" % (version)
    installkey = "InstallPath"
    pythonkey = "PythonPath"
    pythonpath = "%s;%s\\Lib\\;%s\\DLLs\\" % (
        installpath, installpath, installpath
    )
     
    def RegisterPy():
        try:
            reg = OpenKey(HKEY_CURRENT_USER, regpath)
        except EnvironmentError as e:
            try:
                reg = CreateKey(HKEY_CURRENT_USER, regpath)
                SetValue(reg, installkey, REG_SZ, installpath)
                SetValue(reg, pythonkey, REG_SZ, pythonpath)
                CloseKey(reg)
            except:
                print "*** Unable to register!"
                return
            print "--- Python", version, "is now registered!"
            return
        if (QueryValue(reg, installkey) == installpath and
            QueryValue(reg, pythonkey) == pythonpath):
            CloseKey(reg)
            print "=== Python", version, "is already registered!"
            return
        CloseKey(reg)
        print "*** Unable to register!"
        print "*** You probably have another Python installation!"
     
    if __name__ == "__main__":
        RegisterPy()
    启动dos,在register.py所在目录下运行python register.py。

    执行完成后,系统会提示“ Python 2.7 is already registered!”

    3.编写监控脚本(在此只监控CPU,内存,硬盘的使用率或空闲率,若有其他需要请自己完善)

    psutil相关使用文档请参考http://pythonhosted.org/psutil/

    #coding=utf8
    import psutil
    cpu = {'user' : 0, 'system' : 0, 'idle' : 0, 'percent' : 0}
    mem = {'total' : 0, 'avaiable' : 0, 'percent' : 0, 'used' : 0, 'free' : 0}
    
    #磁盘名称
    disk_id = []
    #将每个磁盘的total used free percent 分别存入到相应的list
    disk_total = []
    disk_used = []
    disk_free = []
    disk_percent = []
    
    #获取CPU信息
    def get_cpu_info():
    	cpu_times = psutil.cpu_times()
    	cpu['user'] = cpu_times.user
    	cpu['system'] = cpu_times.system
    	cpu['idle']	= cpu_times.idle
    	cpu['percent'] = psutil.cpu_percent(interval=2)
    #获取内存信息
    def get_mem_info():
    	mem_info = psutil.virtual_memory()
    	mem['total'] = mem_info.total
    	mem['available'] = mem_info.available
    	mem['percent'] = mem_info.percent
    	mem['used'] = mem_info.used
    	mem['free'] = mem_info.free
    #获取磁盘
    def get_disk_info():
    	for id in psutil.disk_partitions():
    		if 'cdrom' in id.opts or id.fstype == '':
    			continue
    		disk_name = id.device.split(':')
    		s = disk_name[0]
    		disk_id.append(s)
    		disk_info = psutil.disk_usage(id.device)
    		disk_total.append(disk_info.total)
    		disk_used.append(disk_info.used)
    		disk_free.append(disk_info.free)
    		disk_percent.append(disk_info.percent)
    		
    
    if __name__ == '__main__':
    	get_cpu_info()
    	cpu_status = cpu['percent']
    	print u"CPU使用率: %s %%" % cpu_status
    	get_mem_info()
    	mem_status = mem['percent']
    	print u"内存使用率: %s %%" % mem_status
    	get_disk_info()
    	for i in range(len(disk_id)):
    		print u'%s盘空闲率: %s %%' % (disk_id[i],100 - disk_percent[i])
    	raw_input("Enter enter key to exit...")  

    执行结果如下:


    4.打包python脚本

    要想监控脚本在其他windows上运行需要安装python环境,但我们可以将监控脚本打包成exe程序发布,只要运行exe程序就能够执行,如何实现呢?

    (1)安装打包程序py2exe-0.6.9.win32-py2.7.exe

    在http://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/ 下载相应的版本

    下载后直接安装即可

    (2)编写一个简单的编译脚本setup_py2exe.py

    from distutils.core import setup
    import py2exe
    
    setup(console=["monitor.py"])
    (3)打包

    进入dos,在setup_py2exe.py所在的目录运行python setup_py2exe.py py2exe

    运行后会在当前目录生成两个文件夹:build和disk,build里面的是一些中间文件可以不用理会,dist里面会产生monitor.exe及其他文件,monitor.exe就是我们需要运行的exe程序,我们需要将dist文件夹发布。

    注意:当我们将dist文件夹发布到其他windows机器后,直接运行monitor.exe后,有可能会报错“由于应用程序配置不正确,应用程序未能启动”。这是由于py2exe打包的程序需要9.0.21022.8这个版本的MSVCR90.DLL,我们可以从网上下载并将其放到dist目录下一起发布。另除了9.0.21022.8这个版本的MSVCR90.DLL外,我们还需要Microsoft.VC90.CRT.manifest文件放在dist目录。

    Microsoft.VC90.CRT.manifest如下:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
          <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
          <noInheritable></noInheritable>
          <assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
          <file name="msvcr90.dll" />
          </assembly>
    ok,我们再次将dist目录发布到其他windows服务器上,运行monitor.exe程序即可。




    展开全文
  • 今天小编就为大家分享一篇python监控进程状态,记录重启时间及进程号的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 通过python实现与三菱PLC通讯,读取/写入,并使用tkinter界面化,还使用matplotlib做了动态折线图。软件初衷是监控PLC设备,所以没有写入操作,单工具类中已包含写入操作,需要的话可以自行添加,工具类是...
  • python监控进程

    2016-04-11 10:04:15
    #p = subprocess.Popen('D:/project/server/bin/Debug/test_tdb.exe', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT); #returncode = p.poll() #while returncode is None: # line = p.stdout....
    import psutil
    import subprocess
    import os
    from os.path import join,getsize
    import re
    import time
    from subprocess import PIPE
    
    
    
    counter=0
    filesize_last=0
    def restart_process():
            haspro = 0
            all_process_name = psutil.pids();
            for pid in all_process_name:
                    pro = psutil.Process(pid)
                    print("process_name : ",pro.name());
                    if():
                            pass
                    if(pro.name() == "test_tdb.exe"):
                            haspro=haspro+1
                            pro.kill()
                            os.popen("E:/data/tdb/code/test_tdb.exe")
                            break
            if(haspro==0):
                    os.popen("E:/data/tdb/code/test_tdb.exe")
    #                        time.sleep(5)
    while(counter>=0):
          filesize = getsize(r"e:\log.csv")
          if(counter>0):
                    if(filesize==filesize_last):
                            print("EQUAL!")
                            restart_process()
                            counter=0
                    if(filesize!=filesize_last):
                            print("NOT EQUAL!")
                            counter=0
                            pass
          if(counter==0):
                    filesize_last = filesize
                    counter=counter+1
                    time.sleep(300)
    
    #p = subprocess.Popen('D:/project/server/bin/Debug/test_tdb.exe', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT);
    #returncode = p.poll()
    #while returncode is None:
    #        line = p.stdout.readline()
    #        returncode = p.poll()
    #        line = line.strip()
     #       print ('line : ',line);
    #        print ('returncode : ',returncode);
    #        if(line == b'Could not create log file: No such file or directory'):
    #                pass
    
                            #os.popen("D:/project/server/bin/Debug/test_tdb.exe",'r',-1)
                    #os.system('D:/project/server/bin/Debug/test_tdb.exe')
                   # p1=psutil.Popen(["D:/project/server/bin/Debug/test_tdb.exe"],stdout=PIPE)
    #process_list = psutil.get_process_list()
    #print("process_list : ",process_list);
    
    #all_process_name = psutil.pids();
    #print("all_process_name= ",all_process_name);
    #for pid in all_process_name:
    #        pro = psutil.Process(pid);
     #if(counter == 0):
                    #print ('There are %.2f ' %(filesize/1024),'Kb')
    #
     #               if(pro.name() == "test_tdb.exe"):
      #                      counter = counter+1
      #                      pro.kill();
       #                     os.popen("D:/project/server/bin/Debug/test_tdb.exe")
        #                    time.sleep(5);
    


     

    展开全文
  • python os.startfile python实现双击运行程序 python监控windows程序 监控进程不在时重新启动 用python监控您的window服务 原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者...
  • 使用psutil模块监控应用程序性能,直接上代码 输入进程号获取应用的一些cpu内存信息 import psutil import time def output(pid): p = psutil.Process(pid) prc_name = p.name() prc_status = p.status() #进程...
  • 因为条件简陋,为了省钱的原则,只能用python+ping的方法监测在线及在线率情况。需要的条件如下: 1.申请一个免费邮箱(QQ,126,163等),或者公司邮箱。 2. python + mysql数据库 效果 架构及源码 1. 表结构 共...
  • # python监控windows某个进程的变化(修正版) # ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| # | id | service | pid | time | status | runtime | # |||||||||||||||||||||||||||||||||||||||||||...
  • python监控接口请求

    千次阅读 2018-01-19 13:42:15
    /usr/bin/env python#coding=utf8import time,os,sched,urllib,httplibimport smtplibimport stringschedule = sched.scheduler(time.time, time.sleep)def perform_command(self, inc): schedule.enter(inc, 0
  • 服务器的监控通过安装一些常用的监控软件之外,有时也需要运行一些shell或Python脚本;shell下可以使用系统自带的ps/free/top/df等shell命令,Python可以调用subprocess等模块来运行shell命令,不过这么做就比较麻烦...
  • 源码: from PyQt5.QtWidgets import ...record = win32gui.FindWindow(None, 'C:\Windows\system32\cmd.exe') app = QApplication(sys.argv) def timer(n): while True: dt= time.strftime('%Y-%m-%d %H%M%S',tim
  • python网速监控脚本功能: 统计网卡接收和发送的总流量,计算每秒的网速代码如下:#! binenv python36import sysimport threadingimport time # 单位换算defunit_conversion(byte): byte = int(b...
  • 那如何才能监控某个进程的CPU利用率呢?我们今天就一起用Python来实现下。 环境准备 依赖库 psutil是Python的一个很流行的库,用来获取系统资源信息的。它支持windows和linux,可以获取CPU,内存,网络,硬盘等信息...
  • python监控进程并重启

    2019-09-29 04:31:30
    最近公司的游戏服务器经常掉线,老板只能让员工不定时登陆服务器看死掉没有,都快成机器人了,因此python自动化监测进程运用脚本就产生了。 分析了具体思路: 1.做个线程定时器,每隔20s执行系统命令查询指定...
  • windows下python监控系统服务

    千次阅读 2015-11-26 19:31:20
    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。...如:监控Serv-U.exe 程序是使用python语言编写,可在Windows下双击MonitorWin32Process
  • 分析了具体思路: 1.做个线程定时器,每隔2s执行系统命令查询指定进程名称是否存在 2.如果不存在,就重启;...实现代码 其他远程启动等骚操作:https://www.cnblogs.com/my-python-2019/p/11177224.html

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,366
精华内容 2,546
关键字:

python监控exe

python 订阅