亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? monitor.py

?? 用Python在Linux下實(shí)現(xiàn)系統(tǒng)狀態(tài)監(jiān)控.如CPU.內(nèi)存等信息.
?? PY
字號(hào):
#!/usr/bin/python

# (C) Copyright 2005 Nuxeo SAS <http://nuxeo.com> 
# Author: bdelbosc@nuxeo.com 
# 
# This program is free software; you can redistribute it and/or modify 
# it under the terms of the GNU General Public License version 2 as published 
# by the Free Software Foundation. 
# 
# This program is distributed in the hope that it will be useful, 
# but WITHOUT ANY WARRANTY; without even the implied warranty of 
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
# GNU General Public License for more details. 
# 
# You should have received a copy of the GNU General Public License 
# along with this program; if not, write to the Free Software 
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 
# 02111-1307, USA. 
# 
"""A Linux monitor server/controller. 
 
$Id$ 
""" 
import sys 
import re 
from time import time, sleep 
from threading import Thread 
from XmlRpcBase import XmlRpcBaseServer, XmlRpcBaseController 
 
 
# ------------------------------------------------------------ 
# monitor readers 
# 
def read_load_info(): 
    """Read the current system load from /proc/loadavg.""" 
    loadavg = open("/proc/loadavg").readline() 
    loadavg = loadavg[:-1] 
    # Contents are space separated: 
    # 5, 10, 15 min avg. load, running proc/total threads, last pid 
    stats = loadavg.split() 
    running = stats[3].split("/") 
    load_stats = {} 
    load_stats['loadAvg1min'] = stats[0] 
    load_stats['loadAvg5min'] = stats[1] 
    load_stats['loadAvg15min'] = stats[2] 
    load_stats['running'] = running[0] 
    load_stats['tasks'] = running[1] 
    return load_stats 
 
 
def read_cpu_usage(): 
    """Read the current system cpu usage from /proc/stat.""" 
    lines = open("/proc/stat").readlines() 
    for line in lines: 
        #print "l = %s" % line 
        l = line.split() 
        if len(l) < 5: 
            continue 
        if l[0].startswith('cpu'): 
            # cpu = sum of usr, nice, sys 
            cpu = long(l[1]) + long(l[2]) + long(l[3]) 
            idl = long(l[4]) 
            return {'CPUTotalJiffies': cpu, 
                    'IDLTotalJiffies': idl, 
                    } 
    return {} 
 
 
def read_mem_info(kernel_rev): 
    """Read the current status of memory from /proc/meminfo.""" 
    meminfo_fields = ["MemTotal", "MemFree", "SwapTotal", "SwapFree"] 
    meminfo = open("/proc/meminfo") 
    if kernel_rev <= 2.4: 
        # Kernel 2.4 has extra lines of info, duplicate of later info 
        meminfo.readline() 
        meminfo.readline() 
        meminfo.readline() 
    lines = meminfo.readlines() 
    meminfo.close() 
    meminfo_stats = {} 
    for line in lines: 
        line = line[:-1] 
        stats = line.split() 
        field = stats[0][:-1] 
        if field in meminfo_fields: 
            meminfo_stats[field[0].lower()+field[1:]] = stats[1] 
 
    return meminfo_stats 
 
 
def read_net_info(interface='eth0'): 
    """Read the stats from an interface.""" 
    ifaces = open( "/proc/net/dev" ) 
    # Skip the information banner 
    ifaces.readline() 
    ifaces.readline() 
    # Read the rest of the lines 
    lines = ifaces.readlines() 
    ifaces.close() 
    # Process the interface lines 
    net_stats = {} 
    for line in lines: 
        # Parse the interface line 
        # Interface is followed by a ':' and then bytes, possibly with 
        # no spaces between : and bytes 
        line = line[:-1] 
        (device, data) = line.split(':') 
 
        # Get rid of leading spaces 
        device = device.lstrip() 
        # get the stats 
        stats = data.split() 
        if device == interface: 
            net_stats['receiveBytes'] = stats[0] 
            net_stats['receivePackets'] = stats[1] 
            net_stats['transmitBytes'] = stats[8] 
            net_stats['transmitPackets'] = stats[9] 
 
    return net_stats 
 
 
# ------------------------------------------------------------ 
# classes 
# 
class MonitorInfo: 
    """A simple class to collect info.""" 
    def __init__(self, host, kernel_rev, interface): 
        self.time = time() 
        self.host = host 
        self.interface = interface 
        for infos in (read_cpu_usage(), 
                      read_load_info(), 
                      read_mem_info(kernel_rev), 
                      read_net_info(interface)): 
            for key, value in infos.items(): 
                setattr(self, key, value) 
 
    def __repr__(self, extra_key=None): 
        text = "<monitor " 
        if extra_key is not None: 
            text += 'key="%s" ' % extra_key 
        for key, value in self.__dict__.items(): 
            text += '%s="%s" ' % (key, value) 
        text += ' />' 
        return text 
 
 
class MonitorThread(Thread): 
    """The monitor thread that collect information.""" 
    def __init__(self, records, host=None, interval=None, interface=None): 
        Thread.__init__(self) 
        self.records = records 
        self._recorder_count = 0        # number of recorder 
        self._running = False           # boolean running mode 
        self._interface = None          # net interface 
        self._interval = None           # interval between monitoring 
        self._host = None               # name of the monitored host 
        self.setInterval(interval) 
        self.setInterface(interface) 
        self.setHost(host) 
        self._kernel_rev = None 
        self.checkKernelRev() 
        # this makes threads endings if main stop with a KeyboardInterupt 
        self.setDaemon(1) 
 
    def setInterval(self, interval): 
        """Set the interval between monitoring.""" 
        self._interval = interval 
 
    def setInterface(self, interface): 
        """Set the network interface to monitor.""" 
        self._interface = interface 
 
    def setHost(self, host): 
        """Set the monitored host.""" 
        self._host = host 
 
    def checkKernelRev(self): 
        """Check the linux kernel revision.""" 
        version = open("/proc/version").readline() 
        kernel_rev = float(re.search(r'version (\d+\.\d+)\.\d+', 
                                     version).group(1)) 
        if (kernel_rev > 2.6) or (kernel_rev < 2.4): 
            sys.stderr.write( 
                "Sorry, kernel v%0.1f is not supported\n" % kernel_rev) 
            sys.exit(-1) 
        self._kernel_rev = kernel_rev 
 
    def run(self): 
        """Thread jobs.""" 
        self._running = True 
        while self._running: 
            sleep(self._interval) 
            if self._recorder_count > 0: 
                self.monitor() 
 
    def stop(self): 
        """Stop the thread.""" 
        self._running = False 
 
    def monitor(self): 
        """The monitor task.""" 
        self.records.append(MonitorInfo(self._host, 
                                        self._kernel_rev, 
                                        self._interface)) 
 
    def startRecord(self): 
        """Enable recording.""" 
        self._recorder_count += 1 
 
    def stopRecord(self): 
        """Stop recording.""" 
        self._recorder_count -= 1 
 
    def countRecorders(self): 
        """Return the number of recorder.""" 
        return self._recorder_count 
 
 
 
# ------------------------------------------------------------ 
# Server 
# 
class MonitorServer(XmlRpcBaseServer): 
    """The XML RPC monitor server.""" 
    server_name = "monitor" 
    method_names = XmlRpcBaseServer.method_names + [ 
        'startRecord', 'stopRecord', 'getResult', 'getXmlResult'] 
 
    def __init__(self, argv=None): 
        self.interval = None 
        self.interface = None 
        self.records = [] 
        self._keys = {} 
        XmlRpcBaseServer.__init__(self, argv) 
        self._monitor = MonitorThread(self.records, 
                                      self.host, 
                                      self.interval, 
                                      self.interface) 
        self._monitor.start() 
 
    def _init_cb(self, conf, options): 
        """init callback.""" 
        self.interval = conf.getfloat('server', 'interval') 
        self.interface = conf.get('server', 'interface') 
 
    def startRecord(self, key): 
        """Start to monitor if it is the first key.""" 
        self.logd('startRecord %s' % key) 
        if not self._keys.has_key(key) or self._keys[key][1] is not None: 
            self._monitor.startRecord() 
        self._keys[key] = [len(self.records), None] 
        return 1 
 
    def stopRecord(self, key): 
        """Stop to monitor if it is the last key.""" 
        self.logd('stopRecord %s' % key) 
        if not self._keys.has_key(key) or self._keys[key][1] is not None: 
            return 0 
        self._keys[key] = [self._keys[key][0], len(self.records)] 
        self._monitor.stopRecord() 
        return 1 
 
    def getResult(self, key): 
        """Return stats for key.""" 
        self.logd('getResult %s' % key) 
        if key not in self._keys.keys(): 
            return [] 
        ret = self.records[self._keys[key][0]:self._keys[key][1]] 
        return ret 
 
    def getXmlResult(self, key): 
        """Return result as xml.""" 
        self.logd('getXmlResult %s' % key) 
        ret = self.getResult(key) 
        ret = [stat.__repr__(key) for stat in ret] 
        return '\n'.join(ret) 
 
 
    def test(self): 
        """auto test.""" 
        key = 'internal_test_monitor' 
        self.startRecord(key) 
        sleep(3) 
        self.stopRecord(key) 
        self.log(self.records) 
        self.log(self.getXmlResult(key)) 
        return 1 
 
 
 
# ------------------------------------------------------------ 
# Controller 
# 
class MonitorController(XmlRpcBaseController): 
    """Monitor controller.""" 
    server_class = MonitorServer 
 
    def test(self): 
        """Testing monitor server.""" 
        server = self.server 
        key = 'internal_test_monitor' 
        server.startRecord(key) 
        sleep(2) 
        server.stopRecord(key) 
        self.log(server.getXmlResult(key)) 
        return 0 
 
# ------------------------------------------------------------ 
# main 
# 
def main(): 
    """Control monitord server.""" 
    ctl = MonitorController() 
    sys.exit(ctl()) 
 
def test(): 
    """Test wihtout rpc server.""" 
    mon = MonitorServer() 
    mon.test() 
 
if __name__ == '__main__': 
    main() 

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区电影| 国产精品资源在线| 精品国产乱码久久久久久夜甘婷婷| 国产一区二区三区美女| 亚洲另类在线一区| 日韩限制级电影在线观看| 99久久精品免费看| 久久精品国产99国产| 亚洲精品视频观看| 欧美激情一区三区| 7777精品伊人久久久大香线蕉经典版下载 | 国产亚洲精品精华液| 欧美亚洲国产一区二区三区| 国产精品一卡二卡在线观看| 日韩av不卡在线观看| 亚洲欧美日韩在线| 欧美国产成人在线| 日韩欧美123| 5月丁香婷婷综合| 91高清在线观看| 99久久伊人久久99| 国产成人8x视频一区二区| 免费久久99精品国产| 亚洲国产日韩一级| 亚洲欧洲国产日本综合| 国产色产综合色产在线视频| 精品少妇一区二区三区日产乱码 | 91麻豆精品国产综合久久久久久 | 国产成人av一区二区| 久久国产麻豆精品| 日韩精品免费专区| 亚洲超碰精品一区二区| 亚洲一区视频在线| 亚洲午夜精品网| 亚洲免费观看高清在线观看| 国产精品传媒视频| 国产精品污污网站在线观看| 久久精品一区二区三区不卡牛牛| 精品国产区一区| 欧美成人激情免费网| 日韩一区二区三区视频在线| 777亚洲妇女| 91麻豆精品国产91久久久久 | 欧美精品色一区二区三区| 欧美午夜不卡在线观看免费| 欧美图区在线视频| 欧美三级蜜桃2在线观看| 欧美日韩国产综合视频在线观看| 欧美亚洲国产一区二区三区va| 欧洲视频一区二区| 在线观看成人免费视频| 色哟哟国产精品| 欧美性做爰猛烈叫床潮| 欧美日韩精品一区二区| 91精品国产综合久久久久久| 欧美一区二区三区婷婷月色| 欧美一区二区在线视频| 日韩精品影音先锋| 国产校园另类小说区| 国产精品动漫网站| 亚洲国产精品久久不卡毛片| 免费人成精品欧美精品| 国产传媒一区在线| 色偷偷成人一区二区三区91 | 精品久久人人做人人爽| 久久精品人人爽人人爽| 国产精品久线在线观看| 亚洲综合自拍偷拍| 日本不卡视频在线| 国产精品综合二区| 一本久久综合亚洲鲁鲁五月天 | 18欧美亚洲精品| 亚洲同性同志一二三专区| 亚洲精品视频一区二区| 日韩成人一区二区| 成人在线一区二区三区| 欧美视频你懂的| 26uuu亚洲综合色欧美| 中文字幕一区日韩精品欧美| 亚洲va欧美va国产va天堂影院| 久久国产生活片100| 99久久国产综合色|国产精品| 欧美日韩国产不卡| 久久久国产精品麻豆| 一区二区三区中文字幕电影| 免费在线观看成人| av动漫一区二区| 日韩一区二区在线观看视频| 亚洲同性同志一二三专区| 麻豆极品一区二区三区| 91色视频在线| 精品久久久久久久久久久久久久久久久| 国产日韩av一区二区| 天天色综合天天| 国产91对白在线观看九色| 欧美日韩三级视频| 国产精品天天摸av网| 日本欧美大码aⅴ在线播放| 成人免费视频网站在线观看| 91精品国产综合久久精品性色| 一色屋精品亚洲香蕉网站| 六月丁香婷婷色狠狠久久| 色综合久久综合网| 国产人成亚洲第一网站在线播放| 亚洲成人精品一区| av亚洲精华国产精华精华| 欧美成人福利视频| 香蕉久久夜色精品国产使用方法| 国产激情偷乱视频一区二区三区| 777久久久精品| 亚洲精品中文在线影院| 国产成人自拍高清视频在线免费播放| 欧美日韩国产一区| 亚洲色图第一区| 风间由美一区二区三区在线观看| 日韩三级视频中文字幕| 亚洲国产精品自拍| 一本到高清视频免费精品| 国产精品污污网站在线观看| 国产九色sp调教91| 日韩欧美在线影院| 亚洲成人av一区二区三区| 色综合久久精品| 中文字幕中文在线不卡住| 国产91对白在线观看九色| www亚洲一区| 精品一区二区久久久| 91精品国产综合久久久久| 首页欧美精品中文字幕| 欧美日韩一区小说| 亚洲一区二区高清| 欧美综合视频在线观看| 亚洲欧美一区二区三区久本道91| 国产91丝袜在线播放0| 欧美国产精品一区| 成人动漫中文字幕| 国产精品免费av| 成人免费观看视频| 中文字幕一区在线观看视频| www.av亚洲| 一区二区三区精密机械公司| 91麻豆123| 亚洲综合另类小说| 欧美日韩国产精选| 美女国产一区二区三区| 欧美成人精品福利| 国产真实乱对白精彩久久| 久久久国产精品午夜一区ai换脸| 极品尤物av久久免费看| 26uuu久久综合| 成人动漫一区二区在线| 亚洲同性同志一二三专区| 欧美午夜精品一区| 蜜臀av性久久久久av蜜臀妖精| 精品国产麻豆免费人成网站| 国产精品18久久久久久久久久久久| 国产亚洲精品bt天堂精选| 不卡的看片网站| 日本高清成人免费播放| 欧美一级理论片| 强制捆绑调教一区二区| 欧美精品一区二区三区在线| 国产激情一区二区三区四区| 中文字幕视频一区二区三区久| 午夜av一区二区| 国产亚洲成年网址在线观看| 美美哒免费高清在线观看视频一区二区| 日韩欧美激情四射| 国产高清精品网站| 亚洲日本va午夜在线影院| 欧美色偷偷大香| 久久99国产精品麻豆| 国产精品女上位| 欧美日本一区二区三区| 久久精品国产久精国产| 中文乱码免费一区二区| 欧美视频日韩视频在线观看| 国内精品伊人久久久久av一坑| 国产精品区一区二区三区| 欧美日韩免费一区二区三区| 精品在线免费视频| 亚洲三级电影网站| 日韩欧美国产wwwww| 91亚洲男人天堂| 久久黄色级2电影| 亚洲丝袜另类动漫二区| 日韩欧美中文字幕公布| 成人精品国产免费网站| 日本午夜一区二区| 中文字幕亚洲区| 欧美大片国产精品| 色就色 综合激情| 国产馆精品极品| 视频一区欧美日韩| 中文字幕一区二区三区在线不卡| 91超碰这里只有精品国产| av成人老司机| 国产在线视频一区二区| 亚洲国产成人porn| 国产精品热久久久久夜色精品三区|