這篇博文是乙個獲取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 ...