本篇文章給大家帶來了linux關于top命令的相關知識,其中包括了top命令的用法和各輸出參數的含義,希望對大家有幫助。

top命令用法
top命令經常用來監控linux的系統狀況,是常用的性能分析工具,能夠實時顯示系統中各個進程的資源占用情況。
top的使用方式 top [-d number] | top [-bnp]
參數解釋:
-d:number代表秒數,表示top命令顯示的頁面更新一次的間隔。默認是5秒。 -b:以批次的方式執行top。 -n:與-b配合使用,表示需要進行幾次top命令的輸出結果。 -p:指定特定的pid進程號進行觀察。
在top命令顯示的頁面還可以輸入以下按鍵執行相應的功能(注意大小寫區分的):
?:顯示在top當中可以輸入的命令 P:以CPU的使用資源排序顯示 M:以內存的使用資源排序顯示 N:以pid排序顯示 T:由進程使用的時間累計排序顯示 k:給某一個pid一個信號。可以用來殺死進程 r:給某個pid重新定制一個nice值(即優先級) q:退出top(用ctrl+c也可以退出top)。
top各輸出參數含義
下面是使用top命令來進行性能檢測的截圖:
圖一(ubuntu):

圖二(centos):

一、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的百分比 |
| 0.0 si | 軟中斷(Software Interrupts)占用CPU的百分比 |
| 0.0 st |
第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(buff/cache) | 用作內核緩存的內存量 |
| KiB Swap: 3905532 total | 交換區總量 |
| 267544 used | 使用的交換區總量 |
| 3637988 free | 空閑交換區總量 |
| 617312 cached Mem | 緩沖的交換區總量。 |
| 3156100 avail 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 | 任務標志 |
其他
默認進入top時,各進程是按照CPU的占用量來排序的。
1、在top基本視圖中,按鍵盤數字“1”可以監控每個邏輯CPU的狀況:
2、敲擊鍵盤‘b’(打開關閉加亮效果)top視圖變換如下:

PID為16283為當前top視圖中唯一的運行態進程。也可以敲擊鍵盤‘y’來打開或者關閉運行態進程的加亮效果。
3、敲擊鍵盤‘x’(打開/關閉排序列的加亮效果),top視圖變換如下:

可以看到現在是按"%CPU"進行排序的,可以按”shift+>”或者”shift+<”左右改變排序序列。
4、改變進程顯示字段
在top基本視圖中,敲擊”f”進入另一個視圖,在這里可以編輯基本視圖中的顯示字段:

用上下鍵選擇選項,按下空格鍵可以決定是否在基本視圖中顯示這個選項。
top命令是一個非常強大的功能,但是它監控的最小單位是進程,如果想監控更小單位時,就需要用到ps或者netstate命令來滿足我們的要求。
站長資訊網