最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2019年05月16日 14:12:22   投稿:mrr  
本文通過(guò)實(shí)例代碼給大家介紹了Python實(shí)現(xiàn)Linux監(jiān)控的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

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

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

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

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

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 目錄中的主要文件的說(shuō)明

-   apm 高級(jí)電源管理信息

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

-   CPUinfo 中央處理器信息

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

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

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

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

-   interrupts  這個(gè)文件的每一行都有一個(gè)保留的中斷

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

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

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

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

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

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

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

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

-   pci pci 設(shè)備信息

-   scsi    scsi 設(shè)備信息

-   self    到查看/proc 程序進(jìn)程目錄的符號(hào)連接

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

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

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

-   version 這個(gè)文件只有一行內(nèi)容,說(shuō)明正在運(yùn)行的內(nèi)核版本??梢杂脴?biāo)準(zhǔn)的編程方法進(jì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'])

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

獲取系統(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']

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

獲取內(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ù)器進(jìn)程的 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 進(jìn)程異常退出, 4 秒后重新啟動(dòng)" 
time.sleep(3) 
os.system("service apache2 restart") 
except: 
print "Error", sys.exc_info()[1]

總結(jié)

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

相關(guān)文章

  • Anaconda如何查看自己目前安裝的包詳解

    Anaconda如何查看自己目前安裝的包詳解

    Anaconda是一種用于數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)的開源發(fā)行版,它包含了很多常用的Python包和工具,如NumPy、Pandas、Scipy、Scikit-Learn等,下面這篇文章主要給大家介紹了關(guān)于Anaconda如何查看自己目前安裝的包的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • Python傳遞參數(shù)的多種方式(小結(jié))

    Python傳遞參數(shù)的多種方式(小結(jié))

    這篇文章主要介紹了Python傳遞參數(shù)的多種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 一篇文章快速理解python中的yield關(guān)鍵字

    一篇文章快速理解python中的yield關(guān)鍵字

    Python中的yield關(guān)鍵字可以讓函數(shù)變成生成器,產(chǎn)生一個(gè)值后暫停,下次調(diào)用時(shí)從上次停下的地方繼續(xù)執(zhí)行,從而節(jié)省內(nèi)存并提高效率,這篇文章主要介紹了python中yield關(guān)鍵字的相關(guān)資料,需要的朋友可以參考下
    2024-11-11
  • Python列表list操作相關(guān)知識(shí)小結(jié)

    Python列表list操作相關(guān)知識(shí)小結(jié)

    今天,本喵帶大家仔細(xì)溫習(xí)一下Python的列表,溫故而知新,不亦說(shuō)乎,需要的朋友可以參考下
    2020-01-01
  • python協(xié)程庫(kù)asyncio(異步io)問(wèn)題

    python協(xié)程庫(kù)asyncio(異步io)問(wèn)題

    這篇文章主要介紹了python協(xié)程庫(kù)asyncio(異步io)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Python實(shí)現(xiàn)批量替換Excel中字符

    Python實(shí)現(xiàn)批量替換Excel中字符

    這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)批量替換Excel中字符,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-11-11
  • django中嵌套的try-except實(shí)例

    django中嵌套的try-except實(shí)例

    這篇文章主要介紹了django中嵌套的try-except實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05
  • Python BentoML構(gòu)建部署和管理機(jī)器學(xué)習(xí)模型技巧掌握

    Python BentoML構(gòu)建部署和管理機(jī)器學(xué)習(xí)模型技巧掌握

    BentoML是一個(gè)開源的Python框架,旨在簡(jiǎn)化機(jī)器學(xué)習(xí)模型的打包、部署和管理,本文將深入介紹BentoML的功能和用法,提供詳細(xì)的示例代碼和解釋,幫助你更好地理解和應(yīng)用這個(gè)強(qiáng)大的工具
    2024-01-01
  • Python Pytorch gpu 分析環(huán)境配置

    Python Pytorch gpu 分析環(huán)境配置

    Pytorch是目前最火的深度學(xué)習(xí)框架之一,目前也支持了pytorch的GPU加速,所以我就想著,在這兩個(gè)電腦上裝個(gè)Pytorch,這篇文章主要介紹了Python Pytorch(gpu)分析環(huán)境配置,需要的朋友可以參考下
    2023-04-04
  • Python中的整除和取模實(shí)例

    Python中的整除和取模實(shí)例

    這篇文章主要介紹了Python中的整除和取模實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06

最新評(píng)論

桂东县| 祥云县| 八宿县| 松滋市| 威宁| 宁夏| 昌图县| 安国市| 湟中县| 洛浦县| 渭南市| 沂水县| 仪征市| 于都县| 鸡泽县| 昆明市| 衡东县| 大连市| 措美县| 彭泽县| 恭城| 广东省| 绍兴县| 兰州市| 临泽县| 宜宾市| 克什克腾旗| 泾川县| 虹口区| 涪陵区| 山西省| 武汉市| 吐鲁番市| 尼木县| 新泰市| 海晏县| 化德县| 微山县| 桃源县| 曲水县| 五家渠市|