運維平台獲取linux執行時資料

2021-09-12 12:29:27 字數 2207 閱讀 4054

這篇博文是乙個獲取linux系統執行時資料的指令碼框架,屬於ops_agent中工具集中乙個小工具,用於排錯之前對機器有乙個整體的把握,不過暫時還沒有完全完工。

功能規劃:

有待完善的地方:

#!/usr/bin/env python

#coding:utf-8

import sys,os

# 獲取軟體base目錄

cur_path = os.path.dirname(os.path.abspath(__file__)

)base_path =

"/".join(cur_path.split(

"/")[:

-2])

# 將軟體的lib目錄放入sys.path中

"lib"))

# 檢查是否已經安裝psutil和inspect模組

try:

import psutil

except exception as e:

print

("please install psutil"

) sys.exit(1)

try:

import inspect

except exception as e:

print

("please install inspect"

) sys.exit(1)

from salt_agent import ops_agent_base # 運維平台agent的基類

class

runtime_collect

(ops_agent_base)

:def

__init__

(self)

:if sys.version_info[0]

==2: ops_agent_base.__init__(self)

else

:super()

.__init__(self)

# 檢查依賴命令是否存在

cmds =

# 命令名稱

packages =

# 命令名對應的rpm包名

for cmd in cmds.keys():

for path in

[os.path.join(path,cmd)

for path in os.environ[

"path"

].split(

":")]:

if os.path.isfile(path)

: cmds[cmd]+=1

break

else

:continue

for cmd in cmds.keys():

if cmds[cmd]==0

: self.__salt__[

"pkg.install"

](packages[cmd]

)def

get_overview

(self)

:print

("overview"

)def

get_process

(self)

:print

("process"

)def

get_network

(self)

:print

("network"

)def

get_io

(self)

:print

("io"

)def

get_cpu

(self)

:print

("cpu"

)def

get_all

(self)

:for fun in inspect.getmembers(self, predicate=inspect.ismethod)

:if fun[0]

[:3]

=="get"

and fun[0]

!="get_all"

: fun[1]

()if __name__ ==

"__main__"

: r = runtime_collect(

) r.get_all(

)

執行時資料區

按理說,在介紹完前端編譯器之後,我們應該介紹如何讓 jvm 去解釋執行 這個編譯後的 class 檔案。但是感覺並不是很恰當。如果把 class 檔案比做新購買的家具,那麼如果需要把家具擺放到家裡,是不是得先了解房子的結構和布局,然後才能將家具進行正確的擺放。我們這裡介紹的 執行時資料區 相當於前面...

JVM執行時資料區

根據 jvm 規範,jvm 記憶體共分為虛擬機器棧 堆 方法區 程式計數器 本地方法棧五個部分。記憶體空間 runtime data area 中可以按照是否執行緒共享分為兩塊,執行緒共享的是方法區 method area 和堆 heap 執行緒獨享的是虛擬機器棧 vm stack 本地方法棧 na...

JVM 執行時資料區

jdk版本 8 class檔案 class content class物件 物件 的含義 class檔案 儲存在磁碟上的.class檔案 十六進製制位元組碼檔案 class content 類載入器子系統載入class檔案,儲存到記憶體中的位元組流,解析前這塊記憶體區域叫class content ...