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