亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Python實現(xiàn)Linux監(jiān)控的方法

系統(tǒng) 1814 0

工作原理:基于/proc 文件系統(tǒng)

Linux 系統(tǒng)為管理員提供了非常好的方法,使其可以在系統(tǒng)運行時更改內(nèi)核,而不需要重新引導(dǎo)內(nèi)核系統(tǒng),這是通過/proc 虛擬文件系統(tǒng)實現(xiàn)的。/proc 文件虛擬系統(tǒng)是一種內(nèi)核和內(nèi)核模塊用來向進程(process)發(fā)送信息的機制(所以叫做“/proc”),這個偽文件系統(tǒng)允許與內(nèi)核內(nèi)部數(shù)據(jù)結(jié)構(gòu)交互,獲取有關(guān)進程的有用信息,在運行中(on the fly)改變設(shè)置(通過改變內(nèi)核參數(shù))。與其他文件系統(tǒng)不同,/proc 存在于內(nèi)存而不是硬盤中。proc 文件系統(tǒng)提供的信息如下:

進程信息:系統(tǒng)中的任何一個進程,在 proc 的子目錄中都有一個同名的進程 ID,可以找到 cmdline、mem、root、stat、statm,以及 status。某些信息只有超級用戶可見,例如進程根目錄。每一個單獨含有現(xiàn)有進程信息的進程有一些可用的專門鏈接,系統(tǒng)中的任何一個進程都有一個單獨的自鏈接指向進程信息,其用處就是從進程中獲取命令行信息。

系統(tǒng)信息:如果需要了解整個系統(tǒng)信息中也可以從/proc/stat 中獲得,其中包括 CPU 占用情況、磁盤空間、內(nèi)存對換、中斷等。

CPU 信息:利用/proc/CPUinfo 文件可以獲得中央處理器的當(dāng)前準(zhǔn)確信息。

負(fù)載信息:/proc/loadavg 文件包含系統(tǒng)負(fù)載信息。

系統(tǒng)內(nèi)存信息:/proc/meminfo 文件包含系統(tǒng)內(nèi)存的詳細(xì)信息,其中顯示物理內(nèi)存的數(shù)量、可用交換空間的數(shù)量,以及空閑內(nèi)存的數(shù)量等。

/proc 目錄中的主要文件的說明

-?? apm 高級電源管理信息

-?? cmdline 這個文件給出了內(nèi)核啟動的命令行

-?? CPUinfo 中央處理器信息

-?? devices 可以用到的設(shè)備(塊設(shè)備/字符設(shè)備)

-?? dma 顯示當(dāng)前使用的 DMA 通道

-?? filesystems 核心配置的文件系統(tǒng)

-?? ioports 當(dāng)前使用的 I/O 端口

-?? interrupts? 這個文件的每一行都有一個保留的中斷

-?? kcore?? 系統(tǒng)物理內(nèi)存映像

-?? kmsg??? 核心輸出的消息,被送到日志文件

-?? mdstat? 這個文件包含了由 md 設(shè)備驅(qū)動程序控制的 RAID 設(shè)備信息

-?? loadavg 系統(tǒng)平均負(fù)載均衡

-?? meminfo 存儲器使用信息,包括物理內(nèi)存和交換內(nèi)存

-?? modules 這個文件給出可加載內(nèi)核模塊的信息。lsmod 程序用這些信息顯示有關(guān)模塊的名稱,大小,使用數(shù)目方面的信息

-?? net 網(wǎng)絡(luò)協(xié)議狀態(tài)信息

-?? partitions? 系統(tǒng)識別的分區(qū)表

-?? pci pci 設(shè)備信息

-?? scsi??? scsi 設(shè)備信息

-?? self??? 到查看/proc 程序進程目錄的符號連接

-?? stat??? 這個文件包含的信息有 CPU 利用率,磁盤,內(nèi)存頁,內(nèi)存對換,全部中斷,接觸開關(guān)以及賞賜自舉時間

-?? swaps?? 顯示的是交換分區(qū)的使用情況

-?? uptime? 這個文件給出自從上次系統(tǒng)自舉以來的秒數(shù),以及其中有多少秒處于空閑

-?? version 這個文件只有一行內(nèi)容,說明正在運行的內(nèi)核版本。可以用標(biāo)準(zhǔn)的編程方法進行分析獲得所需的系統(tǒng)信息

獲取 CPU 的信息

            
#!/usr/bin/env Python
from __future__ import print_function
from collections import OrderedDict
import pprint
def CPUinfo():
''' Return the information in /proc/CPUinfo
as a dictionary in the following format:
CPU_info['proc0']={...}
CPU_info['proc1']={...}
'''
CPUinfo=OrderedDict()
procinfo=OrderedDict()
nprocs = 0
with open('/proc/CPUinfo') as f:
for line in f:
if not line.strip():
# end of one processor
CPUinfo['proc%s' % nprocs] = procinfo
nprocs=nprocs+1
# Reset
procinfo=OrderedDict()
else:
if len(line.split(':')) == 2:
procinfo[line.split(':')[0].strip()] = line.split(':')[1].strip()
else:
procinfo[line.split(':')[0].strip()] = ''
return CPUinfo
if __name__=='__main__':
CPUinfo = CPUinfo()
for processor in CPUinfo.keys():
print(CPUinfo[processor]['model name'])
          

簡單說明一下清單 1,讀取/proc/CPUinfo 中的信息,返回 list,每核心一個 dict。其中 list 是一個使用方括號括起來的有序元素集合。List 可以作為以 0 下標(biāo)開始的數(shù)組。Dict 是 Python 的內(nèi)置數(shù)據(jù)類型之一, 它定義了鍵和值之間一對一的關(guān)系。OrderedDict 是一個字典子類,可以記住其內(nèi)容增加的順序。常規(guī) dict 并不跟蹤插入順序,迭代處理時會根據(jù)鍵在散列表中存儲的順序來生成值。在 OrderedDict 中則相反,它會記住元素插入的順序,并在創(chuàng)建迭代器時使用這個順序。

獲取系統(tǒng)的負(fù)載信息

            
#!/usr/bin/env Python  
import os 
def load_stat(): 
loadavg = {} 
f = open("/proc/loadavg") 
con = f.read().split() 
f.close() 
loadavg['lavg_1']=con[0] 
loadavg['lavg_5']=con[1] 
loadavg['lavg_15']=con[2] 
loadavg['nr']=con[3] 
loadavg['last_pid']=con[4] 
return loadavg 
print "loadavg",load_stat()['lavg_15']
          

簡單說明一下清單 2:清單 2 讀取/proc/loadavg 中的信息,import os :Python 中 import 用于導(dǎo)入不同的模塊,包括系統(tǒng)提供和自定義的模塊。其基本形式為:import 模塊名 [as 別名],如果只需要導(dǎo)入模塊中的部分或全部內(nèi)容可以用形式:from 模塊名 import *來導(dǎo)入相應(yīng)的模塊。OS 模塊 os 模塊提供了一個統(tǒng)一的操作系統(tǒng)接口函數(shù),os 模塊能在不同操作系統(tǒng)平臺如 nt,posix 中的特定函數(shù)間自動切換,從而實現(xiàn)跨平臺操作。

獲取內(nèi)存使用情況

            
!/usr/bin/env Python
from __future__ import print_function
from collections import OrderedDict
def meminfo():
''' Return the information in /proc/meminfo
as a dictionary '''
meminfo=OrderedDict()
with open('/proc/meminfo') as f:
for line in f:
meminfo[line.split(':')[0]] = line.split(':')[1].strip()
return meminfo
if __name__=='__main__':
#print(meminfo())
meminfo = meminfo()
print('Total memory: {0}'.format(meminfo['MemTotal']))
print('Free memory: {0}'.format(meminfo['MemFree']))
          

net.py 獲取網(wǎng)絡(luò)接口的輸入和輸出

???

            
#!/usr/bin/env Python
  import time
  import sys
  if len(sys.argv) > 1:
    INTERFACE = sys.argv[1]
  else:
    INTERFACE = 'eth0'
  STATS = []
  print 'Interface:',INTERFACE
  def rx():
    ifstat = open('/proc/net/dev').readlines()
    for interface in ifstat:
      if INTERFACE in interface:
        stat = float(interface.split()[1])
        STATS[0:] = [stat]
  def tx():
    ifstat = open('/proc/net/dev').readlines()
    for interface in ifstat:
      if INTERFACE in interface:
        stat = float(interface.split()[9])
        STATS[1:] = [stat]
  print  'In     Out'
  rx()
  tx()
  while  True:
    time.sleep(1)
    rxstat_o = list(STATS)
    rx()
    tx()
    RX = float(STATS[0])
    RX_O = rxstat_o[0]
    TX = float(STATS[1])
    TX_O = rxstat_o[1]
    RX_RATE = round((RX - RX_O)/1024/1024,3)
    TX_RATE = round((TX - TX_O)/1024/1024,3)
    print RX_RATE ,'MB   ',TX_RATE ,'MB'
          

crtrl.py 監(jiān)控 Apache 服務(wù)器進程的 Python 腳本

            
#!/usr/bin/env Python 
import os, sys, time 
while True: 
time.sleep(4) 
try: 
ret = os.popen('ps -C apache -o pid,cmd').readlines() 
if len(ret) < 2: 
print "apache 進程異常退出, 4 秒后重新啟動" 
time.sleep(3) 
os.system("service apache2 restart") 
except: 
print "Error", sys.exc_info()[1]
          

總結(jié)

以上所述是小編給大家介紹的Python實現(xiàn)Linux監(jiān)控的方法,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復(fù)大家的!


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产精品自线在线播放 | 手机看片欧美日韩 | 亚洲视频国产 | 国产成人精品午夜在线播放 | 91九色蝌蚪在线 | 四虎精品成人免费视频 | 特级全黄一级毛片视频 | 在线观看日韩 | 国产羞羞事1000部在线观看 | 九九热热 | 国产精品久久久久久久久久免费 | 久久精品成人国产午夜 | 99久久99这里只有免费的精品 | 日韩欧免费一区二区三区 | 五月天激情视频 | 一级一级一级一级毛片 | 中文字幕亚洲一区婷婷 | 色偷偷成人网免费视频男人的天堂 | 亚洲成人在线免费观看 | 日本大片久久久高清免费看 | 波多野结衣三区 | 日本aⅴ永久免费网站www | 亚洲午夜片子大全精品 | 国产日韩欧美在线 | 国产亚洲一区二区在线观看 | 99高清免费国产自产拍 | 亚洲一区中文字幕在线观看 | 久久综合97色综合网 | 一级毛片一级毛片 | 国产成人精品午夜在线播放 | 青青热久久久久综合精品 | 91这里只有精品 | 国产国语对白一级毛片 | 日本高清中文字幕在线观穿线视频 | 夜夜橹 | 日本视频播放免费线上观看 | 97超级碰碰碰碰精品 | 国产三级久久 | 国产高清国内精品福利色噜噜 | 青青青国产免费手机视频在线观看 | 欧美日韩免费在线 |