top 命令
一、功能
top 命令經常用來監控 linux 的系統狀況,是常用的性能分析工具,能夠實時顯示系統中各個進程的資源占用情況。
二、使用方式
?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):
1、top 前 5 行統計信息
第 1 行是任務隊列信息
top - 17:29:09?up 53days, 1 users, load average: 0.00, 0.01, 0.05?
其參數如下:
| 內容? | 含義 |
| 17:29:09 | 表示當前時間 |
| up 53days? | 系統運行時間 格式為時:分 |
| 1 users | 當前登錄用戶數 |
| load average: 0.00, 0.01, 0.05? | 系統負載,即任務隊列的平均長度。 三個數值分別為 1 分鐘、5 分鐘、15 分鐘前到現在的平均值。 |
load average:如果這個數除以邏輯 CPU 的數量,結果高于 5 的時候就表明系統在超負荷運轉了。?
第2行:
Tasks: 69 total, 2 running, 67 sleeping, 0 stopped, 0 zombie?
第3行:
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni, 100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
第 2、3 行為進程和 CPU 的信息,當有多個CPU時,這些內容可能會超過兩行,其參數如下:
| 內容 | 含義 |
| 69 total? | 進程總數 |
| 2 running? | 正在運行的進程數 |
| 158 sleeping | 睡眠的進程數 |
| 0 stopped | 停止的進程數 |
| 0 zombie | 僵尸進程數 |
| 0.0 us | 用戶空間占用 CPU 百分比 |
| 0.0 sy | 內核空間占用 CPU 百分比 |
| 0.0 ni | 用戶進程空間內改變過優先級的進程占用 CPU 百分比 |
| 100.0 id | 空閑 CPU 百分比 |
| 0.0 wa | 等待輸入輸出的 CPU 時間百分比 |
| 0.0 hi | 硬中斷(Hardware IRQ)占用CPU的百分比 |
| 0.0 si | ?軟中斷(Software Interrupts)占用CPU的百分比 |
| 0.0 st? | 用于有虛擬 CPU 的情況,用來指示被虛擬機偷掉的 CPU 時間 |
第4行:
KiB Mem: 1016168 total, 68820used, 567720 free, 379628 buffers?
第5行:
KiB Swap: 0 total, 0 free ,0 used,.293196 avail Mem?
第 4、5 行為內存信息,其參數如下:
| 內容? | 含義 |
| KiB Mem: 1016168 total | 物理內存總量 |
| 567720 used? | 使用的物理內存總量 |
| 68820 free? | 空閑內存總量 |
| 379628 buffers(buff/cache) | 用作內核緩存的內存量 |
| KiB Swap: 0 total | 交換區總量 |
| 0 used | 使用的交換區總量 |
| 0 free?? | 空閑交換區總量 |
| 0 cached Mem? | 緩沖的交換區總量。 |
| 293196 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 | 任務標志 |
3、其他
默認進入 top 時,各進程是按照 CPU 的占用量來排序的。
(1)在 top 基本視圖中,按鍵盤數字“1”可以監控每個邏輯 CPU 的狀況:?
?
(2)敲擊鍵盤‘b’(打開關閉加亮效果)top視圖變換如下:?
PID 為 9 為當前top視圖中唯一的運行態進程。也可以敲擊鍵盤‘y’來打開或者關閉運行態進程的加亮效果。
(3)敲擊鍵盤‘x’(打開/關閉排序列的加亮效果),top 視圖變換如下:
?
可以看到現在是按"%CPU"進行排序的,可以按”shift + >”或者”shift + <”左右改變排序序列。
4、改變進程顯示字段
在 top 基本視圖中,敲擊“f”進入另一個視圖,在這里可以編輯基本視圖中的顯示字段:
用上下鍵選擇選項,按下空格鍵可以決定是否在基本視圖中顯示這個選項。
top 命令是一個非常強大的功能,但是它監控的最小單位是進程,如果想監控更小單位時,就需要用到 ps 或者 netstate 命令來滿足我們的要求。
轉自 https://blog.csdn.net/yjclsx/article/details/81508455
對原文進行了幾處補充。
?
轉載于:https://blog.csdn.net/xujiamin0022016/article/details/89072116
?
(SAW:Game Over!)
總結
- 上一篇: Cpp / std::string 实现
- 下一篇: OS / Linux / Inode 详