python客户端监控工具

简介:
1
<br>

#coding:utf-8
import Queue,threading,time,random,getopt,sys,os
import checkdisk,checkcpu,checkmem
q = Queue.Queue(0)
NUM_WORKERS = 10
class MonitorThread(threading.Thread):
    def __init__(self,jobInput):
        self._jobq = jobInput
        threading.Thread.__init__(self)
    def run(self):
        while True:
            if self._jobq.qsize() > 0:
                try:
                    MonitorJob = self._jobq.get(False)
                    self.MonitorProcessJob(MonitorJob)
                except Queue.Empty:
                    queue_size = 0
            else:
                break
    def MonitorProcessJob(self,MonitorJob):
        doMonitorJob(MonitorJob)
def doMonitorJob(MonitorJob):
    MonitorJob.Run()
def funzionedeamon():
    q.put(checkdisk)
    q.put(checkcpu)
    q.put(checkmem)
    for x in range(NUM_WORKERS):
        MonitorThread(q).start()
def createdaemon():
    try:
        if os.fork() > 0:
            os._exit(0)
    except OSError,error:
        os._exit(1)
    os.chdir("/root/monitor/")
    os.setsid()
    try:
        pid = os.fork()
        if pid > 0:
            fd = open("/var/run/monitor.pid","w")
            fd.write(str(pid))
            fd.close()
            os._exit(0)
    except OSError,error:
        os._exit(1)
    funzionedeamon()

def help():
    print "this script is monitor program"
    print "-h       print help information"
    print "-s       start|stop"

def startpro():
    if os.path.exists("/var/run/monitor.pid"):
        fd = open("/var/run/monitor.pid")
        pid = fd.read()
        fd.close()
        if pid.strip() == "":
            createdaemon()
        else:
            print "进程未关闭"
    else:
        createdaemon()
def stoppro():
    fd = open("/var/run/monitor.pid")
    pid = fd.read()
    fd.close()
    os.kill(int(pid.strip()),signal.SIGKILL)
    fd = open("/var/run/monitor.pid","w")
    fd.write("")
    fd.close()

def main():
    opt,agrs = getopt.getopt(sys.argv[1:],"s:h")
    opsign = ""
    for op,value in opt:
        if op == "-h":
            help()
            os._exit(0)
        elif op == "-s":
            opsign = value
    if opsign == "start":
        startpro()
    elif opsign == "stop":
        stoppro()

if __name__ == "__main__":
    main()
                 本文转自 luoguo 51CTO博客,原文链接:http://blog.51cto.com/luoguoling/1788712
                        



相关文章
|
7月前
|
UED Python
python开发桌面客户端
Python是一种高级编程语言,具有简洁易读的语法和强大的功能。在Python中开发桌面客户端可以使用各种GUI库,如Tkinter、PyQt、wxPython等。这些库提供了创建窗口、按钮、文本框等界面元素的功能,以及处理用户交互事件的能力。通过使用这些库,开发人员可以构建出功能强大且易于使用的桌面应用程序。
|
2天前
|
JSON 测试技术 API
Python的Api自动化测试使用HTTP客户端库发送请求
【4月更文挑战第18天】在Python中进行HTTP请求和API自动化测试有多个库可选:1) `requests`是最流行的选择,支持多种请求方法和内置JSON解析;2) `http.client`是标准库的一部分,适合需要低级别控制的用户;3) `urllib`提供URL操作,适用于复杂请求;4) `httpx`拥有类似`requests`的API,提供现代特性和异步支持。根据具体需求选择,如多数情况`requests`已足够。
9 3
|
4月前
|
数据库 Python
Python-ElasticSearch客户端的封装(聚合查询、统计查询、全量数据)
Python-ElasticSearch客户端的封装(聚合查询、统计查询、全量数据)
54 0
|
5月前
|
物联网 Python
如何通过示例在Python中使用Paho MQTT客户端?
如何通过示例在Python中使用Paho MQTT客户端?
93 2
如何通过示例在Python中使用Paho MQTT客户端?
|
5月前
|
网络协议 Python
153 python网络编程 - TCP客户端
153 python网络编程 - TCP客户端
16 0
|
6月前
|
监控 Shell Linux
使用Python和Bash编写内网监控工具:自动巡检脚本示例
为了确保内网的顺畅运行,自动化监控工具变得不可或缺。本文将介绍如何使用Python和Bash编写一个简单而强大的内网监控工具,它可以帮助您自动巡检网络和系统状态,及时发现问题并采取措施。
246 0
|
8月前
|
网络协议 网络架构 Python
【从零学习python 】76.服务器与客户端:网络通信的关键组成部分
【从零学习python 】76.服务器与客户端:网络通信的关键组成部分
57 0
|
8月前
|
Java Python
基于Flask创建Python服务端,并调用Java客户端
基于Flask创建Python服务端,并调用Java客户端
|
8月前
|
JavaScript 前端开发 Python
基于Flask创建Python服务端,并调用JavaScript客户端
基于Flask创建Python服务端,并调用JavaScript客户端
|
8月前
|
C# Python
基于Flask创建Python服务端,并调用Python客户端、C#客户端
基于Flask创建Python服务端,并调用Python客户端、C#客户端
103 0