top 命令
一、功能
top 命令經(jīng)常用來(lái)監(jiān)控 linux 的系統(tǒng)狀況,是常用的性能分析工具,能夠?qū)崟r(shí)顯示系統(tǒng)中各個(gè)進(jìn)程的資源占用情況。
二、使用方式
?top [-d number] | top [-bnp]
參數(shù)解釋:
- -d:number 代表秒數(shù),表示 top 命令顯示的頁(yè)面更新一次的間隔,默認(rèn)是5秒。
- -b:以批次的方式執(zhí)行 top。
- -n:與 -b 配合使用,表示需要進(jìn)行幾次 top 命令的輸出結(jié)果。
- -p:指定特定的 pid 進(jìn)程號(hào)進(jìn)行觀察。
在 top 命令顯示的頁(yè)面還可以輸入以下按鍵執(zhí)行相應(yīng)的功能(注意大小寫區(qū)分的):
- ?:顯示在 top 當(dāng)中可以輸入的命令。
- P:以 CPU 的使用資源排序顯示。
- M:以內(nèi)存的使用資源排序顯示。
- N:以 pid 排序顯示。
- T:由進(jìn)程使用的時(shí)間累計(jì)排序顯示。
- k:給某一個(gè) pid 一個(gè)信號(hào),可以用來(lái)殺死進(jìn)程。
- r:給某個(gè) pid 重新定制一個(gè) nice 值(即優(yōu)先級(jí))。
- q:退出 top(用 ctrl + c 也可以退出 top)。
三、top 各輸出參數(shù)含義
下面是使用top命令來(lái)進(jìn)行性能檢測(cè)的截圖:
圖一(ubuntu):
圖二(centos):
1、top 前 5 行統(tǒng)計(jì)信息
第 1 行是任務(wù)隊(duì)列信息
top - 17:29:09?up 53days, 1 users, load average: 0.00, 0.01, 0.05?
其參數(shù)如下:
| 內(nèi)容? | 含義 |
| 17:29:09 | 表示當(dāng)前時(shí)間 |
| up 53days? | 系統(tǒng)運(yùn)行時(shí)間 格式為時(shí):分 |
| 1 users | 當(dāng)前登錄用戶數(shù) |
| load average: 0.00, 0.01, 0.05? | 系統(tǒng)負(fù)載,即任務(wù)隊(duì)列的平均長(zhǎng)度。 三個(gè)數(shù)值分別為 1 分鐘、5 分鐘、15 分鐘前到現(xiàn)在的平均值。 |
load average:如果這個(gè)數(shù)除以邏輯 CPU 的數(shù)量,結(jié)果高于 5 的時(shí)候就表明系統(tǒng)在超負(fù)荷運(yùn)轉(zhuǎn)了。?
第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 行為進(jìn)程和 CPU 的信息,當(dāng)有多個(gè)CPU時(shí),這些內(nèi)容可能會(huì)超過(guò)兩行,其參數(shù)如下:
| 內(nèi)容 | 含義 |
| 69 total? | 進(jìn)程總數(shù) |
| 2 running? | 正在運(yùn)行的進(jìn)程數(shù) |
| 158 sleeping | 睡眠的進(jìn)程數(shù) |
| 0 stopped | 停止的進(jìn)程數(shù) |
| 0 zombie | 僵尸進(jìn)程數(shù) |
| 0.0 us | 用戶空間占用 CPU 百分比 |
| 0.0 sy | 內(nèi)核空間占用 CPU 百分比 |
| 0.0 ni | 用戶進(jìn)程空間內(nèi)改變過(guò)優(yōu)先級(jí)的進(jìn)程占用 CPU 百分比 |
| 100.0 id | 空閑 CPU 百分比 |
| 0.0 wa | 等待輸入輸出的 CPU 時(shí)間百分比 |
| 0.0 hi | 硬中斷(Hardware IRQ)占用CPU的百分比 |
| 0.0 si | ?軟中斷(Software Interrupts)占用CPU的百分比 |
| 0.0 st? | 用于有虛擬 CPU 的情況,用來(lái)指示被虛擬機(jī)偷掉的 CPU 時(shí)間 |
第4行:
KiB Mem: 1016168 total, 68820used, 567720 free, 379628 buffers?
第5行:
KiB Swap: 0 total, 0 free ,0 used,.293196 avail Mem?
第 4、5 行為內(nèi)存信息,其參數(shù)如下:
| 內(nèi)容? | 含義 |
| KiB Mem: 1016168 total | 物理內(nèi)存總量 |
| 567720 used? | 使用的物理內(nèi)存總量 |
| 68820 free? | 空閑內(nèi)存總量 |
| 379628 buffers(buff/cache) | 用作內(nèi)核緩存的內(nèi)存量 |
| KiB Swap: 0 total | 交換區(qū)總量 |
| 0 used | 使用的交換區(qū)總量 |
| 0 free?? | 空閑交換區(qū)總量 |
| 0 cached Mem? | 緩沖的交換區(qū)總量。 |
| 293196 avail Mem? | 代表可用于進(jìn)程下一次分配的物理內(nèi)存數(shù)量 |
上述最后提到的緩沖的交換區(qū)總量,這里解釋一下,所謂緩沖的交換區(qū)總量,即內(nèi)存中的內(nèi)容被換出到交換區(qū),而后又被換入到內(nèi)存,但使用過(guò)的交換區(qū)尚未被覆蓋,該數(shù)值即為這些內(nèi)容已存在于內(nèi)存中的交換區(qū)的大小。相應(yīng)的內(nèi)存再次被換出時(shí)可不必再對(duì)交換區(qū)寫入。
計(jì)算可用內(nèi)存數(shù)有一個(gè)近似的公式:
第四行的 free + 第四行的 buffers + 第五行的 cached 。
二、進(jìn)程信息
| 列名? | 含義 |
| PID? | 進(jìn)程 id |
| PPID | 父進(jìn)程 id |
| RUSER | Real user name |
| UID | 進(jìn)程所有者的用戶 id |
| USER | 進(jìn)程所有者的用戶名 |
| GROUP | 進(jìn)程所有者的組名 |
| TTY | 啟動(dòng)進(jìn)程的終端名。不是從終端啟動(dòng)的進(jìn)程則顯示為 |
| PR | 優(yōu)先級(jí) |
| NI | nice 值。負(fù)值表示高優(yōu)先級(jí),正值表示低優(yōu)先級(jí) |
| P | 最后使用的 CPU,僅在多 CPU 環(huán)境下有意義 |
| %CPU | 上次更新到現(xiàn)在的 CPU 時(shí)間占用百分比 |
| TIME | 進(jìn)程使用的 CPU 時(shí)間總計(jì),單位秒 |
| TIME+ | 進(jìn)程使用的 CPU 時(shí)間總計(jì),單位 1 / 100 秒 |
| %MEM | 進(jìn)程使用的物理內(nèi)存百分比 |
| VIRT | 進(jìn)程使用的虛擬內(nèi)存總量,單位 kb。VIRT = SWAP + RES |
| SWAP | 進(jìn)程使用的虛擬內(nèi)存中,被換出的大小,單位 kb |
| RES | 進(jìn)程使用的、未被換出的物理內(nèi)存大小,單位 kb。RES = CODE + DATA |
| CODE | 可執(zhí)行代碼占用的物理內(nèi)存大小,單位 kb |
| DATA | 可執(zhí)行代碼以外的部分(數(shù)據(jù)段 + 棧)占用的物理內(nèi)存大小,單位 kb |
| SHR | 共享內(nèi)存大小,單位 kb |
| nFLT | 頁(yè)面錯(cuò)誤次數(shù) |
| nDRT | 最后一次寫入到現(xiàn)在,被修改過(guò)的頁(yè)面數(shù)。 |
| S | 進(jìn)程狀態(tài)。D = 不可中斷的睡眠狀態(tài)、R = 運(yùn)行、S = 睡眠、T = 跟蹤/停止、Z = 僵尸進(jìn)程 |
| COMMAND | 命令名/命令行 |
| WCHAN | 若該進(jìn)程在睡眠,則顯示睡眠中的系統(tǒng)函數(shù)名 |
| Flags | 任務(wù)標(biāo)志 |
3、其他
默認(rèn)進(jìn)入 top 時(shí),各進(jìn)程是按照 CPU 的占用量來(lái)排序的。
(1)在 top 基本視圖中,按鍵盤數(shù)字“1”可以監(jiān)控每個(gè)邏輯 CPU 的狀況:?
?
(2)敲擊鍵盤‘b’(打開(kāi)關(guān)閉加亮效果)top視圖變換如下:?
PID 為 9 為當(dāng)前top視圖中唯一的運(yùn)行態(tài)進(jìn)程。也可以敲擊鍵盤‘y’來(lái)打開(kāi)或者關(guān)閉運(yùn)行態(tài)進(jìn)程的加亮效果。
(3)敲擊鍵盤‘x’(打開(kāi)/關(guān)閉排序列的加亮效果),top 視圖變換如下:
?
可以看到現(xiàn)在是按"%CPU"進(jìn)行排序的,可以按”shift + >”或者”shift + <”左右改變排序序列。
4、改變進(jìn)程顯示字段
在 top 基本視圖中,敲擊“f”進(jìn)入另一個(gè)視圖,在這里可以編輯基本視圖中的顯示字段:
用上下鍵選擇選項(xiàng),按下空格鍵可以決定是否在基本視圖中顯示這個(gè)選項(xiàng)。
top 命令是一個(gè)非常強(qiáng)大的功能,但是它監(jiān)控的最小單位是進(jìn)程,如果想監(jiān)控更小單位時(shí),就需要用到 ps 或者 netstate 命令來(lái)滿足我們的要求。
轉(zhuǎn)自 https://blog.csdn.net/yjclsx/article/details/81508455
對(duì)原文進(jìn)行了幾處補(bǔ)充。
?
轉(zhuǎn)載于:https://blog.csdn.net/xujiamin0022016/article/details/89072116
?
(SAW:Game Over!)
總結(jié)
- 上一篇: Cpp / std::string 实现
- 下一篇: 请实现一个函数,将字符串中的空格替换成“