專利名稱:獲取Linux操作系統(tǒng)信息的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種獲取Linux操作系統(tǒng)信息的方法,尤其涉及一種獲取Linux操作系統(tǒng)基本硬件信息和運行期間系統(tǒng)信息的方法,屬于計算機信息采集及處理技術(shù)領(lǐng)域。
背景技術(shù):
隨著信息化程度的不斷提高,在企業(yè)中的服務(wù)器數(shù)量會越來越多。如何把這些服務(wù)器用好、管好,最大限度地發(fā)揮設(shè)備的潛能就成為這些服務(wù)器的擁有者們所關(guān)心的一個重要問題。而管理服務(wù)器的首要條件就是必須隨時掌握每一臺服務(wù)器的系統(tǒng)信息,包括基本硬件信息和運行期間系統(tǒng)信息。因此采用一種系統(tǒng)、安全、高效的方法來獲取服務(wù)器的系統(tǒng)信息是做好服務(wù)器管理的重要基礎(chǔ)。
Linux操作系統(tǒng)具有性能穩(wěn)定、開放源代碼、成本低廉的特點;越來越多的企業(yè)開始使用Linux作為服務(wù)器的操作系統(tǒng)。因此對Linux服務(wù)器的管理問題也就開始受到人們的關(guān)注。
目前,基于Linux操作系統(tǒng)獲取服務(wù)器系統(tǒng)信息的方法沒有提供調(diào)用接口,不能滿足服務(wù)器管理的需求。例如常見的查看系統(tǒng)信息的工具(例如System monitor,System Info,CPU/MEM usage,CPULoad,MemLoad,NetLoad,SwapLoad等)只能監(jiān)控到服務(wù)器的某一個信息點,不能提供給用戶一整套系統(tǒng)信息。并且,用戶關(guān)心的CPU利用率、內(nèi)存利用率、硬盤即時流量、硬盤溫度等信息無法獲得和提供。
因此如何從運行Linux操作系統(tǒng)的服務(wù)器上獲取相應(yīng)的硬件信息和運行期間的系統(tǒng)信息,已經(jīng)成為了管理Linux服務(wù)器的瓶頸,是管理Linux服務(wù)器首先要解決的重要問題。
發(fā)明內(nèi)容
本發(fā)明的主要目的在于提供一種獲取Linux操作系統(tǒng)信息的方法,通過讀取和處理Linux操作系統(tǒng)的內(nèi)核信息文件,獲得運行該LINUX操作系統(tǒng)服務(wù)器的完整信息。
本發(fā)明的另一目的在于提供一種獲取Linux操作系統(tǒng)信息的方法,其可獨立于不同的Linux發(fā)行版本,而僅僅依靠標準的Linux內(nèi)核就可以實現(xiàn)服務(wù)器信息的獲取,實現(xiàn)兼容性。
本發(fā)明的目的是這樣實現(xiàn)的一種獲取Linux操作系統(tǒng)信息的方法,至少包括如下的步驟步驟1通過Linux操作系統(tǒng)的proc文件系統(tǒng)(proc是類UNIX操作系統(tǒng)非常獨特的一個目錄,它其實是一個映射在內(nèi)存中的文件系統(tǒng),稱為proc文件系統(tǒng)),讀取Linux內(nèi)核中各模塊的信息;步驟2對讀出的信息進行處理;步驟3將處理后的信息輸出到指定的接口文件。
所述的各模塊的信息至少包括靜態(tài)信息,其以字符串形式表達,至少包括CPU的基本信息、硬盤基本信息、內(nèi)存基本信息、網(wǎng)卡信息、PCI擴展卡基本信息、光驅(qū)基本信息以及操作系統(tǒng)基本信息;該靜態(tài)信息按原字符串形式直接讀出;動態(tài)信息,其以數(shù)字形式和/或字符串形式表達,至少包括CPU利用率、硬盤輸入/輸出吞吐率、內(nèi)存利用率、網(wǎng)絡(luò)流量。
上面步驟2所述的處理為對讀取的動態(tài)信息進行計算,獲得可以直接讀取的動態(tài)信息數(shù)據(jù)。
所述的計算為對CPU利用率的計算,具體為步驟211分兩次從proc文件系統(tǒng)中讀取由Linux內(nèi)核輸出的CPU時間片數(shù)據(jù);步驟212根據(jù)該CPU時間片數(shù)據(jù),并依據(jù)如下公式分別計算CPU運行在用戶應(yīng)用狀態(tài)和系統(tǒng)狀態(tài)下的時間的總和及其相對于所有運行時間數(shù)的比率;Total1=user1+nice1+sys1+idle1;Total2=user2+nice2+sys2+idle2;Rate={[(user2+sys2)-(user1+sys1)]÷(total2-total1)}×100其中,Total1、Total2分別為第一次和第二次讀出的累計總資源數(shù)據(jù);user1、user2分別為第一次和第二次讀出的用戶應(yīng)用狀態(tài)下的時間總和數(shù)據(jù);nice1、nice2分別為第一次和第二次讀出的操作系統(tǒng)在調(diào)整進程優(yōu)先級時所耗費的時間(由于這是操作系統(tǒng)內(nèi)部的時間消耗,并沒有對用戶作業(yè)產(chǎn)生直接貢獻,因此不計入實際消耗的CPU時間片);sys1、sys2分別為第一次和第二次讀出的系統(tǒng)狀態(tài)下的時間總和數(shù)據(jù);idle1、idle2分別為第一次和第二次讀出的CPU空閑狀態(tài)的時間(在這段時間中CPU沒有進行任何的運算,處于空閑狀態(tài),沒有對用戶作業(yè)產(chǎn)生直接貢獻,因此不計入實際消耗的CPU時間);Rate為CPU運行在用戶應(yīng)用狀態(tài)和系統(tǒng)狀態(tài)下的時間總和相對于所有運行時間數(shù)的比率。
所述的計算為對硬盤輸入/輸出吞吐率的計算,具體為步驟221分兩次從proc文件系統(tǒng)中讀取由Linux內(nèi)核輸出的硬盤吞吐總量數(shù)據(jù);步驟222根據(jù)該硬盤吞吐總量數(shù)據(jù),并依據(jù)如下公式計算硬盤輸入/輸出吞吐率;A=dk_drive_rblk_t1+dk_drive_wblk_t1;
B=dk_drive_rblk_t2+dk_drive_wblk_t2;disk_iorate=(B-A)÷(T2-T1)其中,dk_drive_rblk_t1為第一次讀取的硬盤在系統(tǒng)啟動后累計讀出的數(shù)據(jù)塊數(shù)量;dk_drive_rblk_t2為第二次讀取的硬盤在系統(tǒng)啟動后累計讀出的數(shù)據(jù)塊數(shù)量;dk_drive_wblk_t1為第一次讀取的硬盤在系統(tǒng)啟動后累計寫入的數(shù)據(jù)塊數(shù)量;dk_drive_wblk_t2為第二次讀取的硬盤在系統(tǒng)啟動后累計寫入的數(shù)據(jù)塊數(shù)量;A、B分別為第一次和第二次讀取的硬盤在系統(tǒng)啟動后的累計吞吐量數(shù)據(jù);T1、T2分別為第一次和第二次讀取由Linux內(nèi)核輸出的硬盤吞吐總量數(shù)據(jù)的時間;disk_iorate為硬盤輸入/輸出吞吐率。
所述的計算為對內(nèi)存利用率的計算,具體為步驟231從proc文件系統(tǒng)中讀取由Linux內(nèi)核輸出的內(nèi)存信息;步驟232根據(jù)該內(nèi)存信息,并依據(jù)如下公式計算內(nèi)存利用率;mem_userate=(used÷total)×100%;其中,total為系統(tǒng)的物理內(nèi)存總量;used為已被使用的物理內(nèi)存量;mem_userate為內(nèi)存利用率。
所述的計算為對網(wǎng)絡(luò)流量的計算,具體為步驟241分兩次從proc文件系統(tǒng)中讀取由Linux內(nèi)核輸出的記錄網(wǎng)絡(luò)打開以后累計流量的原始數(shù)據(jù);步驟242根據(jù)該累計流量的原始數(shù)據(jù),并依據(jù)如下公式計算網(wǎng)絡(luò)設(shè)備的平均網(wǎng)絡(luò)流量;A=Receive_byte_t1+Transmit_byte_t1;B=Receive_byte_t2+Transmit_byte_t2;net_flux=[B-A]÷(t2-t1);其中,A、B分別為第一次和第二次讀取的累計流量的原始數(shù)據(jù);Receive-byte_t1為第一次讀取的網(wǎng)絡(luò)設(shè)備的累計接收字節(jié)數(shù);Transmit_byte_t1為第一次讀取的網(wǎng)絡(luò)設(shè)備的累計發(fā)送字節(jié)數(shù);Receive_byte_t2為第二次讀取的網(wǎng)絡(luò)設(shè)備的累計接收字節(jié)數(shù);Transmit_byte_t2為第二次讀取的網(wǎng)絡(luò)設(shè)備的累計發(fā)送字節(jié)數(shù);net_flux為平均網(wǎng)絡(luò)流量;t1、t2分別為第一次和第二次讀取由Linux內(nèi)核輸出的累計流量的原始數(shù)據(jù)的時間。
所述的硬盤為一個或一個以上;所述的網(wǎng)絡(luò)設(shè)備為一個或一個以上。
本發(fā)明通過讀取和處理Linux操作系統(tǒng)\proc目錄下的內(nèi)核信息文件,獲得運行該LINUX操作系統(tǒng)服務(wù)器的完整信息,并可獨立于不同的Linux發(fā)行版本,而僅僅依靠標準的Linux內(nèi)核就可以實現(xiàn)服務(wù)器信息的獲取,具有廣泛的兼容性。
圖1為本發(fā)明Linux服務(wù)器的系統(tǒng)信息的總體原理框圖。
圖2為本發(fā)明獲取Linux服務(wù)器的系統(tǒng)信息的流程示意圖。
圖3為本發(fā)明Linux服務(wù)器系統(tǒng)信息匯集的流程示意圖。
具體實施例方式以下結(jié)合附圖和具體的實施例對本發(fā)明作進一步的詳細說明參見圖1、圖2、圖3和表1,其為本發(fā)明可以獲得Linux服務(wù)器的系統(tǒng)信息。
表1
上述表1中的信息,可以通過讀取和處理/proc目錄下的內(nèi)核信息文件,并進行一定的處理得到。
/proc是類UNIX操作系統(tǒng)非常獨特的一個目錄,它其實是一個映射在內(nèi)存中的文件系統(tǒng),稱為proc文件系統(tǒng)。這個文件系統(tǒng)中主要包含的是Linux內(nèi)核向用戶空間開放的內(nèi)核信息,并且用戶可以通過修改其中某些文件的內(nèi)容在線對Linux內(nèi)核進行配置。
proc文件系統(tǒng)是由Linux操作系統(tǒng)內(nèi)核提供的標準接口,所有的Linux操作系統(tǒng)都以目錄/proc的形式向用戶空間開放proc文件系統(tǒng)。因此,從這個文件系統(tǒng)獲取信息可以獨立于不同的Linux發(fā)行版本,而僅僅依靠標準的官方Linux內(nèi)核,這樣可以簡化兼容性問題。
本發(fā)明所涉及的獲取系統(tǒng)信息的方法充分利用了proc文件系統(tǒng)的特點,可以獨立于操作系統(tǒng)的其它服務(wù),緊緊依靠Linux操作系統(tǒng)的內(nèi)核就獲得眾多的操作系統(tǒng)信息。作為補充,也可以使用一些驅(qū)動程序提供的接口以獲得諸如網(wǎng)卡連接速度、通斷狀態(tài)和RAID卡的信息。
參見圖2和圖3,本發(fā)明要從中獲取信息的文件為從/proc/cpuinfo文件中獲取CPU的信息,從/proc/meminfo文件中獲取內(nèi)存信息,從/proc/ioports文件中獲取輸入/輸出端口信息,從/proc/partitions文件中獲取硬盤分區(qū)信息,從/proc/stat文件中獲取內(nèi)核重要數(shù)據(jù)統(tǒng)計信息,從/proc/version文件中獲取操作系統(tǒng)版本信息,從/proc/ide/文件中獲取IDE(智能磁盤設(shè)備接口,Interface DeviceElectronic)塊設(shè)備信息;從/proc/scsi文件中獲取SCSI(小型計算機系統(tǒng)接口,Small Computer System Interface)塊設(shè)備信息。
實施例1參見圖2,通過讀取以上文件或目錄,就可以獲得Linux操作系統(tǒng)信息。有些信息需要對采集到的數(shù)據(jù)進行一些特殊的處理才可以得到實際需要的系統(tǒng)信息,最具代表性的是CPU利用率信息從/proc/stat中可以讀取到CPU在user,nice,sys,idle四種狀態(tài)下運行的時間數(shù)據(jù),要計算CPU利用率就要看CPU運行在user和sys兩種狀態(tài)中時間的總和占所有運行時間數(shù)的比率。
對這個文件需要讀取兩遍,用total表示累計總資源,那么user+sys就是想要知道的累計CPU占用的資源。每個變量后面的數(shù)字表示它是第幾次讀文件得到的,用如下方法可算出CPU占用率Total_1=user_1+nice_1+sys_1+idle_1Total_2=user_2+nice_2+sys_2+idle_2Rate=([(user_2+sys_2)-(user_1+sys_1)]/(total_2-total_1)}*100%
其中,Total1、Total2分別為第一次和第二次讀出的累計總資源數(shù)據(jù);user1、user2分別為第一次和第二次讀出的用戶應(yīng)用狀態(tài)下的時間總和數(shù)據(jù);nice1、nice2分別為第一次和第二次讀出的操作系統(tǒng)在調(diào)整進程優(yōu)先級時所耗費的時間;sys1、sys2分別為第一次和第二次讀出的系統(tǒng)狀態(tài)下的時間總和數(shù)據(jù);idle1、idle2分別為第一次和第二次讀出的CPU空閑狀態(tài)的時間;Rate為CPU運行在用戶應(yīng)用狀態(tài)和系統(tǒng)狀態(tài)下的時間總和相對于所有運行時間數(shù)的比率。
在上述的實施例中,由于兩次讀取的時間間隔比較短,因此可以近似地認為這就是即時的CPU利用率。
實施例2硬盤輸入/輸出吞吐率的獲取。
參見圖2,硬盤輸入/輸出吞吐率即是硬盤在較短時間內(nèi)平均每秒的吞吐流量,本實施例中以字節(jié)為單位進行統(tǒng)計。在/proc文件系統(tǒng)的/proc/stat文件中保存有Linux的每一個硬盤吞吐總量的信息,并且,在/proc/stat文件中具體為以字符串“disk_io”開頭的那一行。如果一臺計算機的Linux系統(tǒng)中的/proc/stat文件中,該統(tǒng)計硬盤流量的一行顯示信息如下disk_io(3,0)(42945,39452,300042,3493,48176)則在后一對括號中的5個數(shù)字在Linux內(nèi)核中的解釋為(dk_drive,dk_drive_rio,dk_drive_rblk,dk_drive_wio,dk_drive_wblk);其中,dk_drive_rblk是該硬盤在系統(tǒng)啟動后累計讀取的數(shù)據(jù)塊(512Byte);dk_drive_wblk是該硬盤在系統(tǒng)啟動后累計寫入的數(shù)據(jù)塊(512Byte),因此所以只要解析k_drive_rblk和dk_drive_wblk字段即可獲得硬盤吞吐率。具體的處理和計算的方法為首先確定一個時間t1,然后讀取t1時刻的dk_drive_rblk_t1(硬盤在系統(tǒng)啟動后累計讀取的數(shù)據(jù)塊)和dk_drive_wblk_t1(硬盤在系統(tǒng)啟動后累計寫入的數(shù)據(jù)塊);然后,再確定一個時間t2,并且讀取t2時刻的dk_drive_rblk_t2(硬盤在系統(tǒng)啟動后累計讀取的數(shù)據(jù)塊)和dk_drive_wblk_t2(硬盤在系統(tǒng)啟動后累計寫入的數(shù)據(jù)塊)。只要t1和t2兩個時刻間隔較短,按照如下公式計算硬盤輸入/輸出吞吐率disk_iorateA=dk_drive_rblk_t1+dk_drive_wblk_t1;B=dk_drive_rblk_t2+dk_drive_wblk_t2;disk_iorate=(B-A)÷(T2-T1)其中,dk_drive_rblk_t1為在t1時刻讀取的硬盤在系統(tǒng)啟動后累計讀出的數(shù)據(jù)塊數(shù)量;dk_drive_rblk_t2為在t2時刻的硬盤在系統(tǒng)啟動后累計讀出的數(shù)據(jù)塊數(shù)量;dk_drive_wblk_t1為在t1時刻的硬盤在系統(tǒng)啟動后累計寫入的數(shù)據(jù)塊數(shù)量;dk_drive_wblk_t2為在t2時刻的硬盤在系統(tǒng)啟動后累計寫入的數(shù)據(jù)塊數(shù)量;A、B分別為在t1時刻和t2時刻讀取的硬盤在系統(tǒng)啟動后的累計吞吐量數(shù)據(jù);T1、T2分別為在t1時刻和t2時刻讀取由Linux內(nèi)核輸出的硬盤吞吐總量數(shù)據(jù)的時間;disk_iorate為硬盤輸入/輸出吞吐率。
因為,本實施例中,讀出來的輸入/輸出吞吐率以數(shù)據(jù)塊(512Byte)為單位的,因此如果要得到以Kbyte為單位的吞吐率,還需要將disk_iorate除以2,這樣,就得到了以Kbyte為單位的硬盤輸入/輸出吞吐率。
實施例3內(nèi)存利用率的獲取參見圖2,內(nèi)存利用率的獲取相對簡單。從/proc/meminfo文件中,可以獲得系統(tǒng)物理內(nèi)存的使用情況。例如假定從/proc/meminfo文件中讀取到如表2信息表2
其中,total下面對應(yīng)的就是系統(tǒng)的物理內(nèi)存總量,為261984256Byte,而used為已被使用的物理內(nèi)存量為258281472Byte,因此內(nèi)存利用率就是(258281472/261984256)×100%=98.6%所以,從/proc/meminfo中讀取內(nèi)存使用情況的相關(guān)信息可以按照如下公式計算系統(tǒng)的內(nèi)存利用率mem_userate=(used/total)×100%;mem_userate為內(nèi)存利用率。
實施例4獲取網(wǎng)絡(luò)流量參見圖2,獲取網(wǎng)絡(luò)流量的信息需要從/proc/net/dev文件中讀取記錄網(wǎng)絡(luò)打開以后累計流量的原始數(shù)據(jù),然后進行計算。例如從/proc/net/dev中關(guān)于網(wǎng)絡(luò)流量的信息為
其中,Receive對應(yīng)的bytes為網(wǎng)絡(luò)啟動以后網(wǎng)絡(luò)設(shè)備累計接收的字節(jié)數(shù);Transmit對應(yīng)的bytes為網(wǎng)絡(luò)啟動以后網(wǎng)絡(luò)設(shè)備累計發(fā)送的字節(jié)數(shù)。
具體的處理和計算的方法為首先確定一個時間t1,然后讀取網(wǎng)絡(luò)啟動以后t1時刻的網(wǎng)絡(luò)設(shè)備累計接收的字節(jié)數(shù)Receive-byte_t1和網(wǎng)絡(luò)啟動以后t1時刻的網(wǎng)絡(luò)設(shè)備發(fā)送的字節(jié)數(shù)、Transmit-byte_t1;(二者之和就是t1時刻的累計流量);然后再確定一個時間t2,然后讀取網(wǎng)絡(luò)啟動以后t2時刻的網(wǎng)絡(luò)設(shè)備累計接收的字節(jié)數(shù)Receive_byte_t2和網(wǎng)絡(luò)啟動以后t2時刻的網(wǎng)絡(luò)設(shè)備發(fā)送的字節(jié)數(shù)、Transmit_byte_t2;(二者之和就是t2時刻的累計流量);按照如下公式計算網(wǎng)絡(luò)設(shè)備的平均網(wǎng)絡(luò)流量A=Receive_byte_t1+Transmit_byte_t1;B=Receive_byte_t2+Transmit_byte_t2;net_flux=[B-A]÷(t2-t1);其中,A、B分別為第一次和第二次讀取的累計流量的原始數(shù)據(jù);Receive_byte_t1為第一次讀取的網(wǎng)絡(luò)設(shè)備的累計接收字節(jié)數(shù);Transmit_byte_t1為第一次讀取的網(wǎng)絡(luò)設(shè)備的累計發(fā)送字節(jié)數(shù);Receive_byte_t2為第二次讀取的網(wǎng)絡(luò)設(shè)備的累計接收字節(jié)數(shù);Transmit_byte_t2為第二次讀取的網(wǎng)絡(luò)設(shè)備的累計發(fā)送字節(jié)數(shù);net_flux為平均網(wǎng)絡(luò)流量;t1、t2分別為第一次和第二次讀取由Linux內(nèi)核輸出的累計流量的原始數(shù)據(jù)的時間。
以上實施例僅用以說明而非限制本發(fā)明所涉及的技術(shù)方案,盡管參照以上較佳實施例對本發(fā)明進行了詳細說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當理解,本發(fā)明的技術(shù)方案可以進行修改、變形或者等同替換;而不脫離本發(fā)明技術(shù)方案的精神和范圍,均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍之中。
權(quán)利要求
1.一種獲取Linux操作系統(tǒng)信息的方法,其特征在于它至少包括如下的步驟步驟1通過Linux操作系統(tǒng)的proc文件系統(tǒng),讀取Linux內(nèi)核中各模塊的信息;步驟2對讀出的信息進行處理;步驟3將處理后的信息輸出到指定的接口文件。
2.根據(jù)權(quán)利要求1所述的獲取Linux操作系統(tǒng)信息的方法,其特征在于所述的各模塊的信息至少包括靜態(tài)信息,其以字符串形式表達,至少包括CPU的基本信息、硬盤基本信息、內(nèi)存基本信息、網(wǎng)卡信息、PCI擴展卡基本信息、光驅(qū)基本信息以及操作系統(tǒng)基本信息;該靜態(tài)信息按原字符串形式直接讀出;動態(tài)信息,其以數(shù)字形式和/或字符串形式表達,至少包括CPU利用率、硬盤輸入/輸出吞吐率、內(nèi)存利用率、網(wǎng)絡(luò)流量。
3.根據(jù)權(quán)利要求1或2所述的獲取Linux操作系統(tǒng)信息的方法,其特征在于步驟2所述的處理為對讀取的動態(tài)信息進行計算,獲得可以直接讀取的動態(tài)信息數(shù)據(jù)。
4.根據(jù)權(quán)利要求3所述的獲取Linux操作系統(tǒng)信息的方法,其特征在于所述的計算為對CPU利用率的計算,具體為步驟211分兩次從proc文件系統(tǒng)中讀取由Linux內(nèi)核輸出的CPU時間片數(shù)據(jù);步驟212根據(jù)該CPU時間片數(shù)據(jù),并依據(jù)如下公式分別計算CPU運行在用戶應(yīng)用狀態(tài)和系統(tǒng)狀態(tài)下的時間的總和及其相對于所有運行時間數(shù)的比率;Total1=user1+nice1+sys1+idle1;Total2=user2+nice2+svs2+idle2;Rate={[(user2+sys2)-(user1+sys1)]÷(total2-total1)}×100其中,Total1、Total2分別為第一次和第二次讀出的累計總資源數(shù)據(jù);user1、user2分別為第一次和第二次讀出的用戶應(yīng)用狀態(tài)下的時間總和數(shù)據(jù);nice1、nice2分別為第一次和第二次讀出的操作系統(tǒng)在調(diào)整進程優(yōu)先級時所耗費的時間;sys1、sys2分別為第一次和第二次讀出的系統(tǒng)狀態(tài)下的時間總和數(shù)據(jù);idle1、idle2分別為第一次和第二次讀出的CPU空閑狀態(tài)的時間;Rate為CPU運行在用戶應(yīng)用狀態(tài)和系統(tǒng)狀態(tài)下的時間總和相對于所有運行時間數(shù)的比率。
5.根據(jù)權(quán)利要求3所述的獲取Linux操作系統(tǒng)信息的方法,其特征在于所述的計算為對硬盤輸入/輸出吞吐率的計算,具體為步驟221分兩次從proc文件系統(tǒng)中讀取由Linux內(nèi)核輸出的硬盤吞吐總量數(shù)據(jù);步驟222根據(jù)該硬盤吞吐總量數(shù)據(jù),并依據(jù)如下公式計算硬盤輸入/輸出吞吐率;A=dk_drive_rblk_t1+dk_drive_wblk_t1;B=dk_drive_rblk_t2+dk_drive_wblk_t2;disk_iorate=(B-A)÷(T2-T1)其中,dk_drive_rblk_t1為第一次讀取的硬盤在系統(tǒng)啟動后累計讀出的數(shù)據(jù)塊數(shù)量;dk_drive_rblk_t2為第二次讀取的硬盤在系統(tǒng)啟動后累計讀出的數(shù)據(jù)塊數(shù)量;dk_drive_wblk_t1為第一次讀取的硬盤在系統(tǒng)啟動后累計寫入的數(shù)據(jù)塊數(shù)量;dk_drive_wblk_t2為第二次讀取的硬盤在系統(tǒng)啟動后累計寫入的數(shù)據(jù)塊數(shù)量;A、B分別為第一次和第二次讀取的硬盤在系統(tǒng)啟動后的累計吞吐量數(shù)據(jù);T1、T2分別為第一次和第二次讀取由Linux內(nèi)核輸出的硬盤吞吐總量數(shù)據(jù)的時間;disk_iorate為硬盤輸入/輸出吞吐率。
6.根據(jù)權(quán)利要求3所述的獲取Linux操作系統(tǒng)信息的方法,其特征在于所述的計算為對內(nèi)存利用率的計算,具體為步驟231從proc文件系統(tǒng)中讀取由Linux內(nèi)核輸出的內(nèi)存信息;步驟232根據(jù)該內(nèi)存信息,并依據(jù)如下公式計算內(nèi)存利用率;mem_userate=(used÷total)×100%;其中,total為系統(tǒng)的物理內(nèi)存總量;used為已被使用的物理內(nèi)存量;mem_userate為內(nèi)存利用率。
7.根據(jù)權(quán)利要求3所述的獲取Linux操作系統(tǒng)信息的方法,其特征在于所述的計算為對網(wǎng)絡(luò)流量的計算,具體為步驟241分兩次從proc文件系統(tǒng)中讀取由Linux內(nèi)核輸出的記錄網(wǎng)絡(luò)打開以后累計流量的原始數(shù)據(jù);步驟242根據(jù)該累計流量的原始數(shù)據(jù),并依據(jù)如下公式計算網(wǎng)絡(luò)設(shè)備的平均網(wǎng)絡(luò)流量;A=Receive_byte_t1+Transmit_byte_t1;B=Receive_byte_t2+Transmit_byte_t2;net_flux=[B-A]÷(t2-t1);其中,A、B分別為第一次和第二次讀取的累計流量的原始數(shù)據(jù);Receive_byte_t1為第一次讀取的網(wǎng)絡(luò)設(shè)備的累計接收字節(jié)數(shù);Transmit_byte_t1為第一次讀取的網(wǎng)絡(luò)設(shè)備的累計發(fā)送字節(jié)數(shù);Receive_byte_t2為第二次讀取的網(wǎng)絡(luò)設(shè)備的累計接收字節(jié)數(shù);Transmit_byte_t2為第二次讀取的網(wǎng)絡(luò)設(shè)備的累計發(fā)送字節(jié)數(shù);net_flux為平均網(wǎng)絡(luò)流量;t1、t2分別為第一次和第二次讀取由Linux內(nèi)核輸出的累計流量的原始數(shù)據(jù)的時間。
8.根據(jù)權(quán)利要求5所述的獲取Linux操作系統(tǒng)信息的方法,其特征在于所述的硬盤為一個或一個以上。
9.根據(jù)權(quán)利要求7所述的獲取Linux操作系統(tǒng)信息的方法,其特征在于所述的網(wǎng)絡(luò)設(shè)備為一個或一個以上。
全文摘要
一種獲取Linux操作系統(tǒng)信息的方法,通過Linux操作系統(tǒng)的proc文件系統(tǒng),讀取Linux內(nèi)核中各模塊的信息;對讀出的信息進行處理;將處理后的信息輸出到指定的接口文件。本發(fā)明通過讀取和處理Linux操作系統(tǒng)\proc目錄下的內(nèi)核信息文件,獲得運行該LINUX操作系統(tǒng)服務(wù)器的完整信息,并可獨立于不同的Linux發(fā)行版本,而僅僅依靠標準的Linux內(nèi)核就可以實現(xiàn)服務(wù)器信息的獲取,具有廣泛的兼容性。
文檔編號G06F17/40GK1480878SQ0212933
公開日2004年3月10日 申請日期2002年9月2日 優(yōu)先權(quán)日2002年9月2日
發(fā)明者周健, 李勇, 周謐, 席振新, 王晟, 談華芳, 郜遠, 陳光亮, 王洪武, 周 健 申請人:聯(lián)想(北京)有限公司