top命令用法
top命令經(jīng)常用來(lái)監(jiān)控linux的系統(tǒng)狀況,是常用的性能分析工具,能夠?qū)崟r(shí)顯示系統(tǒng)中各個(gè)進(jìn)程的資源占用情況。
top的使用方式 top [-d number] | top [-bnp]
參數(shù)解釋:
-d:number代表秒數(shù),表示top命令顯示的頁(yè)面更新一次的間隔。默認(rèn)是5秒。
-b:以批次的方式執(zhí)行top。
-n:與-b配合使用,表示需要進(jìn)行幾次top命令的輸出結(jié)果。
-p:指定特定的pid進(jìn)程號(hào)進(jìn)行觀察。
在top命令顯示的頁(yè)面還可以輸入以下按鍵執(zhí)行相應(yīng)的功能(注意大小寫(xiě)區(qū)分的):
?:顯示在top當(dāng)中可以輸入的命令
P:以CPU的使用資源排序顯示
M:以內(nèi)存的使用資源排序顯示
N:以pid排序顯示
T:由進(jìn)程使用的時(shí)間累計(jì)排序顯示
k:給某一個(gè)pid一個(gè)信號(hào)。可以用來(lái)殺死進(jìn)程
r:給某個(gè)pid重新定制一個(gè)nice值(即優(yōu)先級(jí))
q:退出top(用ctrl+c也可以退出top)。
top各輸出參數(shù)含義
下面是使用top命令來(lái)進(jìn)行性能檢測(cè)的截圖:
圖一(ubuntu):
圖二(centos):
第1行:top - 05:43:27 up 4:52, 2 users, load average: 0.58, 0.41, 0.30
第1行是任務(wù)隊(duì)列信息,其參數(shù)如下:
load average: 如果這個(gè)數(shù)除以邏輯CPU的數(shù)量,結(jié)果高于5的時(shí)候就表明系統(tǒng)在超負(fù)荷運(yùn)轉(zhuǎn)了。
第2行:Tasks: 159 total, 1 running, 158 sleeping, 0 stopped, 0 zombie
第3行:%Cpu(s): 37.0 us, 3.7 sy, 0.0 ni, 59.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
第2、3行為進(jìn)程和CPU的信息
當(dāng)有多個(gè)CPU時(shí),這些內(nèi)容可能會(huì)超過(guò)兩行l(wèi)inux命令,其參數(shù)如下:
第4行:KiB Mem: 1530752 total, 1481968 used, 48784 free, 70988 buffers
total used free shared buffers cached。total used free shared buffers cached。total used free shared buffers cached。
第4、5行為內(nèi)存信息
其參數(shù)如下:
上述最后提到的緩沖的交換區(qū)總量,這里解釋一下,所謂緩沖的交換區(qū)總量,即內(nèi)存中的內(nèi)容被換出到交換區(qū),而后又被換入到內(nèi)存,但使用過(guò)的交換區(qū)尚未被覆蓋,該數(shù)值即為這些內(nèi)容已存在于內(nèi)存中的交換區(qū)的大小。相應(yīng)的內(nèi)存再次被換出時(shí)可不必再對(duì)交換區(qū)寫(xiě)入。
計(jì)算可用內(nèi)存數(shù)有一個(gè)近似的公式:
第四行的free + 第四行的buffers + 第五行的cached
二、進(jìn)程信息
默認(rèn)進(jìn)入top時(shí),各進(jìn)程是按照CPU的占用量來(lái)排序的。
1、在top基本視圖中,按鍵盤數(shù)字“1”可以監(jiān)控每個(gè)邏輯CPU的狀況:
2、敲擊鍵盤‘b’(打開(kāi)關(guān)閉加亮效果)top視圖變換如下:
我們知道inner hook只能屏蔽當(dāng)前進(jìn)程的主線程的鼠標(biāo)消息和鍵盤消息,如果要想屏蔽當(dāng)前運(yùn)行的所有進(jìn)程的鼠標(biāo)消息和鍵盤消息,那么安裝鉤子過(guò)程的代碼必須放入動(dòng)態(tài)鏈接庫(kù)中。 她具有快速安全的關(guān)閉,定時(shí)關(guān)閉和重啟計(jì)算機(jī), 以及可以終止當(dāng)前正在運(yùn)行的所有進(jìn)程(程序),以提高 系統(tǒng)利用率。createdirectoryw 創(chuàng)建一個(gè)新目錄 createfilew 打開(kāi)或創(chuàng)建以下對(duì)象,并返回可訪問(wèn)的句柄:控制臺(tái),通信資源,目錄(只讀打開(kāi)),磁盤驅(qū)動(dòng)器,文件linux命令,郵槽,管道 createthread 在主線程的基礎(chǔ)上創(chuàng)建一個(gè)新線程 deletefilew 刪除指定文件 exitprocess 終止一個(gè)進(jìn)程 findclose 關(guān)閉一個(gè)搜索句柄 findfirstfilew 根據(jù)文件名查找文件,利用在歷遍指定目錄的所有文件 findnextfilew 根據(jù)文件名查找文件,利用在歷遍指定目錄的所有文件 getcommandlinew 獲得指向當(dāng)前命令行緩沖區(qū)的一個(gè)指針 getcurrentprocess 獲取當(dāng)前進(jìn)程的一個(gè)偽句柄 getcurrentthread 獲取當(dāng)前線程句柄 getfilesize 獲得該文件的大小 getmodulehandlew 獲取一個(gè)應(yīng)用程序或動(dòng)態(tài)鏈接庫(kù)的模塊句柄 getprocessheap 返回調(diào)用進(jìn)程的默認(rèn)堆句柄 getshortpathnamew 獲取指定路徑的短路徑形式 heapalloc 指定的堆上分配內(nèi)存,并且分配后的內(nèi)存不可移動(dòng) heapfree 釋放堆內(nèi)存 isdebuggerpresent 確定調(diào)用進(jìn)程是否由用戶模式的調(diào)試器調(diào)試 mapviewoffile 負(fù)責(zé)把文件數(shù)據(jù)映射到進(jìn)程的地址空間 readfile 從文件中讀出數(shù)據(jù) setfilepointer 說(shuō)明在一個(gè)文件中設(shè)置當(dāng)前的讀取位置 writefile 將數(shù)據(jù)寫(xiě)入文件。
3、敲擊鍵盤‘x’(打開(kāi)/關(guān)閉排序列的加亮效果),top視圖變換如下:
10.若對(duì)序列(2, 12, 16, 70, 5, 10)按值從小到大進(jìn)行排序,前三趟排序的結(jié)果分別為:。二分折半查找法,每次取一個(gè)順序序列的中間值與要查找的值進(jìn)行比對(duì),然后判斷是在前半段查找還是后半段查找,確定好之后再取中間值進(jìn)行比對(duì)繼續(xù)查找,所以前提條件是要查找的序列必須進(jìn)行排序。首先把序列分成兩個(gè)子序列,遞歸地對(duì)子序列進(jìn)行排序,直到整個(gè)序列排序結(jié)束。
4、改變進(jìn)程顯示字段
在top基本視圖中,敲擊”f”進(jìn)入另一個(gè)視圖,在這里可以編輯基本視圖中的顯示字段:
用上下鍵選擇選項(xiàng),按下空格鍵可以決定是否在基本視圖中顯示這個(gè)選項(xiàng)。
top命令是一個(gè)非常強(qiáng)大的功能,但是它監(jiān)控的最小單位是進(jìn)程,如果想監(jiān)控更小單位時(shí),就需要用到ps或者netstate命令來(lái)滿足我們的要求。
參考文獻(xiàn)
1、https://blog.csdn.net/quiet_girl/article/details/50668126
2、
---------------------