linux TOP命令最全講解

TOP是一個動態顯示過程,即可以通過用戶按鍵來不斷刷新當前狀態.如果在前臺執行該命令,它將獨佔前臺,直到用戶終止該程序爲止.比較準確的說,top命令提供了實時的對系統處理器的狀態監視.

下面是使用top命令來進行性能檢測的截圖:

在這裏插入圖片描述

各參數含義

一、top前5行統計信息

第1行: top - 05:43:27 up 4:52, 2 users, load average: 0.58, 0.41, 0.30
第1行是任務隊列信息,其參數如下:

內容 含義
05:43:27 表示當前時間
up 4:52 系統運行時間 格式爲時:分
2 users 當前登錄用戶數
load average: 0.58, 0.41, 0.30 系統負載,即任務隊列的平均長度。 三個數值分別爲 1分鐘、5分鐘、15分鐘前到現在的平均值。

load average: 如果這個數除以邏輯CPU的數量,結果高於5的時候就表明系統在超負荷運轉了。

第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行爲進程和CPU的信息

當有多個CPU時,這些內容可能會超過兩行,其參數如下:

內容 含義
159 total 進程總數
1 running 正在運行的進程數
158 sleeping 睡眠的進程數
0 stopped 停止的進程數
0 zombie 殭屍進程數
37.0 us 用戶空間佔用CPU百分比
3.7 sy 內核空間佔用CPU百分比
0.0 ni 用戶進程空間內改變過優先級的進程佔用CPU百分比
59.3 id 空閒CPU百分比
0.0 wa 等待輸入輸出的CPU時間百分比
0.0 hi 硬中斷(Hardware IRQ)佔用CPU的百分比,CPU服務於硬中斷所耗費的時間總額
0.0 si、0.0 st CPU服務於軟中斷所耗費的時間總額、Steal Time


第4行: KiB Mem: 1530752 total, 1481968 used, 48784 free, 70988 buffers
第5行: KiB Swap: 3905532 total, 267544 used, 3637988 free. 617312 cached Mem
第4、5行爲內存信息

其參數如下:

內容 含義
KiB Mem: 1530752 total 物理內存總量
1481968 used 使用的物理內存總量
48784 free 空閒內存總量
70988 buffers 用作內核緩存的內存量
KiB Swap: 3905532 total 交換區總量
267544 used 使用的交換區總量
3637988 free 空閒交換區總量
617312 cached Mem 緩衝的交換區總量。

上述最後提到的緩衝的交換區總量,這裏解釋一下,所謂緩衝的交換區總量,即內存中的內容被換出到交換區,而後又被換入到內存,但使用過的交換區尚未被覆蓋,該數值即爲這些內容已存在於內存中的交換區的大小。相應的內存再次被換出時可不必再對交換區寫入。

計算可用內存數有一個近似的公式:
第四行的free + 第四行的buffers + 第五行的cached

二、進程信息

列名 含義
PID 進程id
PPID 父進程id
RUSER Real user name
UID 進程所有者的用戶id
USER 進程所有者的用戶名
GROUP 進程所有者的組名
TTY 啓動進程的終端名。不是從終端啓動的進程則顯示爲 ?
PR 優先級
NI nice值。負值表示高優先級,正值表示低優先級
P 最後使用的CPU,僅在多CPU環境下有意義
%CPU 上次更新到現在的CPU時間佔用百分比
TIME 進程使用的CPU時間總計,單位秒
TIME+ 進程使用的CPU時間總計,單位1/100秒
%MEM 進程使用的物理內存百分比
VIRT 進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES
SWAP 進程使用的虛擬內存中,被換出的大小,單位kb
RES 進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA
CODE 可執行代碼佔用的物理內存大小,單位kb
DATA 可執行代碼以外的部分(數據段+棧)佔用的物理內存大小,單位kb
SHR 共享內存大小,單位kb
nFLT 頁面錯誤次數
nDRT 最後一次寫入到現在,被修改過的頁面數。
S 進程狀態。D=不可中斷的睡眠狀態 R=運行 S=睡眠 T=跟蹤/停止 Z=殭屍進程
COMMAND 命令名/命令行
WCHAN 若該進程在睡眠,則顯示睡眠中的系統函數名
Flags 任務標誌
默認情況下僅顯示比較重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 幾個列!

可以通過下面的快捷鍵來更改顯示內容:
  更改顯示內容通過 f 鍵可以選擇顯示的內容(按 f 鍵之後會顯示列的列表,按 a-z 即可顯示或隱藏對應的列,最後按回車鍵確定)
  按 o 鍵可以改變列的顯示順序(按小寫的 a-z 可以將相應的列向右移動,而大寫的 A-Z 可以將相應的列向左移動,最後按回車鍵確定)
  按大寫的 F 或 O 鍵,然後按 a-z 可以將進程按照相應的列進行排序,而大寫的 R 鍵可以將當前的排序倒轉.


三、 使用技巧

1.top命令默認值顯示前面一部分的進程,若是想要查看全部的進程信息,則需要使用命令:top -ab -n 1,在這個命令中,a表示按內存倒序排列,b表示將所有列輸出,n表示只執行一次。

2.在使用top -ab -n 1將所有進程信息輸出之後,可以使用AWK等類似工具統計信息,例如:統計出COMMAND爲httpd的所有進程佔用的內存。

3.也可以使用命令top -an -n 1 | grep httpd,查看所有httpd的進程信息,如下圖:

這裏寫圖片描述

4. 常用命令
top   // 每隔5秒顯式所有進程的資源佔用情況
top -d 2  // 每隔2秒顯式所有進程的資源佔用情況
top -c  // 每隔5秒顯式進程的資源佔用情況,並顯示進程的命令行參數(默認只有進程名)
top -p 12345 -p 6789// 每隔5秒顯示pid是12345和pid是6789的兩個進程的資源佔用情況
top -d 2 -c -p 123456 // 每隔2秒顯示pid是12345的進程的資源使用情況,並顯式該進程啓動的命令行參數
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章