Python實現Linux監控
工作原理:基于/proc 文件系統
linux 系統為管理員提供了非常好的方法,使其可以在系統運行時更改內核,而不需要重新引導內核系統,這是通過/proc 虛擬文件系統實現的。/proc 文件虛擬系統是一種內核和內核模塊用來向進程(process)發送信息的機制(所以叫做“/proc”),這個偽文件系統允許與內核內部數據結構交互,獲取有關進程的有用信息,在運行中(on the fly)改變設置(通過改變內核參數)。與其他文件系統不同,/proc 存在于內存而不是硬盤中。proc 文件系統提供的信息如下:
進程信息:系統中的任何一個進程,在 proc 的子目錄中都有一個同名的進程 ID,可以找到 cmdline、mem、root、stat、statm,以及 status。某些信息只有超級用戶可見,例如進程根目錄。每一個單獨含有現有進程信息的進程有一些可用的專門鏈接,系統中的任何一個進程都有一個單獨的自鏈接指向進程信息,其用處就是從進程中獲取命令行信息。
系統信息:如果需要了解整個系統信息中也可以從/proc/stat 中獲得,其中包括 CPU 占用情況、磁盤空間、內存對換、中斷等。
CPU 信息:利用/proc/CPUinfo 文件可以獲得中央處理器的當前準確信息。
負載信息:/proc/loadavg 文件包含系統負載信息。
系統內存信息:/proc/meminfo 文件包含系統內存的詳細信息,其中顯示物理內存的數量、可用交換空間的數量,以及空閑內存的數量等。
/proc 目錄中的主要文件的說明
簡單說明一下清單 1,讀取/proc/CPUinfo 中的信息,返回 list,每核心一個 dict。其中 list 是一個使用方括號括起來的有序元素集合。List 可以作為以 0 下標開始的數組。Dict 是 Python 的內置數據類型之一, 它定義了鍵和值之間一對一的關系。OrderedDict 是一個字典子類,可以記住其內容增加的順序。常規 dict 并不跟蹤插入順序,迭代處理時會根據鍵在散列表中存儲的順序來生成值。在 OrderedDict 中則相反,它會記住元素插入的順序,并在創建迭代器時使用這個順序。
獲取系統的負載信息
簡單說明一下清單 2:清單 2 讀取/proc/loadavg 中的信息,import os :Python 中 import 用于導入不同的模塊,包括系統提供和自定義的模塊。其基本形式為:import 模塊名 [as 別名],如果只需要導入模塊中的部分或全部內容可以用形式:from 模塊名 import *來導入相應的模塊。OS 模塊 os 模塊提供了一個統一的操作系統接口函數,os 模塊能在不同操作系統平臺如 nt,posix 中的特定函數間自動切換,從而實現跨平臺操作。
獲取內存使用情況
net.py 獲取網絡接口的輸入和輸出
crtrl.py 監控 Apache 服務器進程的 Python 腳本
本文轉載自異步社區
軟件開發
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。