TOP指令是Linux下常用的性能分析工具,能夠實時顯示系統中各個程序的資源占用狀況,top一個動态顯示結果的指令工具,能夠實時的顯示系統資源的利用情況。如圖為top指令預設的顯示格式。
第一行的表示目前時間、系統運作時間、目前登入的使用者數量、以及系統負載情況等資訊,和uptime指令的效果是一樣的。可以用l來切換到時間等參數是否顯示。load average(即任務隊列的平均長度) 0.00,0.00,0.00 3個值分别表示 1分鐘 ,5分鐘,15分鐘前
到目前的平均負載情況。
第二行:是對目前系統運作任務的統計情況。可以用t來切換顯示情況。
Tasks:表示目前系統的總的程序數量,
running:表示正在運作的程序數量,
sleeping:休眠的程序數量,
stop: 表示停止的程序數量,
zombie:僵屍程序的數量。
第三行:表示CPU的資源占用情況 可以用t來切換顯示情況。
Cpu(s): 0.0 % us : 使用者空間占用CPU百分比
0.3%sy : 核心空間占用CPU百分比
0.0% ni : 使用者程序空間内改變過優先級的程序占用CPU百分比
99.3% id :空閑CPU百分比
0.0% wa: 用于等待IO完成的CPU時間
0.0%hi: 處理硬體中斷的CPU時
0.3%si: 處理軟體中斷的CPU時間
0.0%st: 這個虛拟機被hypervisor偷去的CPU時間
(譯注:如果目前處于一個hypervisor下的vm,實際上hypervisor也是要消耗一部分CPU處理時間的)。
第四行:記憶體資訊的使用情況,該部分的資訊有點類似于free -m指令的擷取到的資訊,第一行為實體記憶體,第二行為虛拟記憶體。主要包含記憶體的使用情況、虛拟記憶體以及緩存等資訊。
第五橫向列的資訊
在橫向列出的系統屬性和狀态下面,是以列顯示的程序。不同的列代表下面要解釋的不同屬性。
預設上,top顯示這些關于程序的屬性:
PID
程序ID,程序的唯一辨別符
USER
程序所有者的實際使用者名。
PR
程序的排程優先級。這個字段的一些值是'rt'。這意味這這些程序運作在實時态。
NI
程序的nice值(優先級)。越小的值意味着越高的優先級。
VIRT
程序使用的虛拟記憶體。
RES
駐留記憶體大小。駐留記憶體是任務使用的非交換實體記憶體大小。
SHR
SHR是程序使用的共享記憶體。
S
這個是程序的狀态。它有以下不同的值:
- D - 不可中斷的睡眠态。
- R – 運作态
- S – 睡眠态
- T – 被跟蹤或已停止
- Z – 僵屍态
%CPU
自從上一次更新時到現在任務所使用的CPU時間百分比。
%MEM
程序使用的可用實體記憶體百分比。
TIME+
任務啟動後到現在所使用的全部CPU時間,精确到百分之一秒。
COMMAND
運作程序所使用的指令。
還有許多在預設情況下不會顯示的輸出,它們可以顯示程序的頁錯誤、有效組群組ID和其他更多的資訊。
2. 互動指令
我們之前說過top是一個互動指令。上一節我們已經遇到了一些指令。這裡我們會探索更多的指令。
2.1 ‘h’: 幫助
首先,我們可以用'h'或者'?'顯示互動指令的幫助菜單。
2.2 ‘<ENTER>’ 或者 ‘<SPACE>’: 重新整理顯示
top指令預設在一個特定間隔(3秒)後重新整理顯示。要手動重新整理,使用者可以輸入回車或者空格。
2.3 ‘A’: 切換交替顯示模式
這個指令在全屏和交替模式間切換。在交替模式下會顯示4個視窗(譯注:分别關注不同的字段):
- Def (預設字段組)
- Job (任務字段組)
- Mem (記憶體字段組)
- Usr (使用者字段組)
這四組字段共有一個獨立的可配置的概括區域和它自己的可配置任務區域。4個視窗中隻有一個視窗是目前視窗。目前視窗的名稱顯示在左上方。(譯注:隻有目前視窗才會接受你鍵盤互動指令)
我們可以用'a'和'w'在4個 視窗間切換。'a'移到後一個視窗,'w'移到前一個視窗。用'g'指令你可以輸入一個數字來選擇目前視窗。
2.4 ‘B’: 觸發粗體顯示
一些重要資訊會以加粗字型顯示。這個指令可以切換粗體顯示。
2.5 ‘d’ 或‘s’: 設定顯示的重新整理間隔
當按下'd'或's'時,你将被提示輸入一個值(以秒為機關),它會以設定的值作為重新整理間隔。如果你這裡輸入了1,top将會每秒重新整理。
2.6 ‘l’、‘t’、‘m’: 切換負載、任務、記憶體資訊的顯示
這會相應地切換頂部的平均負載、任務/CPU狀态和記憶體資訊的概況顯示。
2.7 ‘f’: 字段管理
用于選擇你想要顯示的字段。用'*'标記的是已選擇的。
上下光标鍵在字段内導航,左光标鍵可以選擇字段,回車或右光标鍵确認。
按'<'移動已排序的字段到左邊,'>'則移動到右邊。
2.8 ‘R’: 反向排序
切換反向/正常排序。
2.9 ‘c’: 觸發指令
切換是否顯示程序啟動時的完整路徑和程式名。
2.10 ‘i’: 空閑任務
切換顯示空閑任務。
2.11 ‘V’: 樹視圖
切換樹視圖。
2.12 ‘Z’: 改變配色
按下'Z'向使用者顯示一個改變top指令的輸出顔色的螢幕。可以為8個任務區域選擇8種顔色。
下面顯示的是4中顔色顯示的top視圖。
2.13 ‘z’: 切換彩色顯示
切換彩色,即打開或關閉彩色顯示。
2.14 ‘x’ 或者 ‘y’
切換高亮資訊:'x'将排序字段高亮顯示(縱列);'y'将運作程序高亮顯示(橫行)。依賴于你的顯示設定,你可能需要讓輸出彩色來看到這些高亮。
2.15 ‘u’: 特定使用者的程序
顯示特定使用者的程序。你會被提示輸入使用者名。空白将會顯示全部使用者。
2.16 ‘n’ 或 ‘#’: 任務的數量
設定最大顯示的任務數量
2.17 ‘k’: 結束任務
top指令中最重要的一個指令之一。用于發送信号給任務(通常是結束任務)。
2.18 ‘r’: 重新設定優先級
重新設定一個任務的排程優先級。
3. 指令行選項
這些指令行選項與上面讨論的指令大多相同。top的輸出可以用指令互動操作,但是你也可以帶參數運作top來設定你想要的效果。
3.1 -b: 批處理模式
-b選項以批處理模式啟動top指令。當你想要在檔案中儲存輸出時是很有用的。
3.2 -c: 指令/程式名 觸發
如上面所讨論到的指令,這個選項會以上次記住的程式/指令顯示的狀态顯示(是否顯示完整路徑)。
3.3 -d: 設定延遲間隔
設定top的顯示間隔(以秒計)。比如。
$ top -d 1
将會以1秒的重新整理間隔啟動top。
3.4 -i: 切換顯示空閑程序
這個選項設定top指令的上一次記住的相反的'i'狀态。
3.5 -n: 設定疊代數量
用-n選項,你可以設定top退出前疊代的次數。
$ top -n 3
将會在重新整理輸出3次後退出。
3.6 -p: 監控特定的PID
你可以用-p選項監控指定的PID。PID的值為0将被作為top指令自身的PID。
3.7 -u 或 -U: 使用者名 或者 UID
$ top -p 28453 -u raghu top: conflicting process selections (U/p/u