top 命令查看進程列表
top
命令是 linux 下常用的性能分析工具,能實時顯示系統(tǒng)中各個進程的資源占用狀況。和 win 的資源管理器類似。top
是一個動態(tài)顯示過程,即可以通過用戶按鍵來不斷刷新當前狀態(tài),如果在前臺執(zhí)行該命令,它將獨占前臺,知道用戶終止該程序為止。比較準確的說,top
命令提供了實時的對系統(tǒng)處理器的狀態(tài)監(jiān)視。它將顯示系統(tǒng)中 CPU 最” 敏感” 的任務列表。該命令可以按 CPU 使用,內存使用和執(zhí)行時間對任務進行排序;而且該命令的很多特性都可以通過交互命令或者在個人定制文件中進行設定。
top 命令詳解:
命令格式:
top [參數(shù)]
功能: 顯示當前系統(tǒng)正在執(zhí)行的進程的相關信息,包括進程的相關信息,包括進程 ID,內存占用率,CPU 占用率等等
主要參數(shù): ```參數(shù) 說明 -b 批處理 -c 顯示完整的命令 -I 忽略失效過程 -s 保密模式 -S 累積模式 -i< 時間 > 設置間隔時間 -u< 用戶名 > 指定用戶名 -p< 進程號 > 指定進程 -n< 次數(shù) > 循環(huán)顯示的次數(shù)
案例 1:
\#top
top - 10:03:56 up 26 min, 1 user, load average:0.00,0.00,0.00
Tasks:101 total, 1 running,100 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.4%us, 0.8%sy, 0.0%ni,97.3%id, 1.4%wa, 0.0%hi, 0.1%si, 0.0%st
Mem: 1922432k total, 156380k used, 1766052k free, 13788k buffers
Swap: 1048568k total, 0k used, 1048568k free, 63608k cached
\
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1653 root 20 0 15032 1096 836 R 2.0 0.1 0:00.01 top
1 root 20 0 19356 1528 1228 S 0.0 0.1 0:02.58 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 ```
省略部分顯示結果
分析:
- 前五行是當前系統(tǒng)情況整體的統(tǒng)計信息區(qū)。
- 具體介紹如下:
- 第一行:任務隊列信息,同 uptime 命令的執(zhí)行結果,具體參數(shù)說明如下:
```10:03:56 :當前系統(tǒng)時間
up 26 min :系統(tǒng)連續(xù)運行的時間 (不重啟,不斷電,不關機)
1 user :當前有 1 個用戶登錄系統(tǒng)
load average:0.00,0.00,0.00 :;oad average 后面的三個數(shù)字分別是一分鐘,五分鐘,十五分鐘的負載情況。load average :數(shù)據(jù)是每隔五秒檢查一次活躍的進程數(shù),然后按特定算法算出的數(shù)值。如果這個數(shù)除以邏輯 CPU 的數(shù)量,結果高于 5 的時候就表明系統(tǒng)在超負荷運轉了。```
- 第二行,Tasks----任務 (進程),具體信息說明如下:
系統(tǒng)目前有 101 個進程,目前有一個正在運行,100 個在 sleep,0 個進程 stopped,0 個僵死進程。
- 第三行,CPU 狀態(tài)信息,具體屬性說明如下:
- `0.4%us`: 用戶控件占用 CPU 的百分比
- `0.8%sy`: 內核控件占用 CPU 的百分比
- `0.0%ni`: 改變過優(yōu)先級的進程占用 CPU 的百分比
- `97.3%id`: 空閑 CPU 百分比
- `1.4%wa`:IO 等待占用的 CPU 的百分比
- `0.0%hi`: 硬中斷占用 CPU 的百分比
- `0.1%si`: 軟中斷占用 CPU 的百分比
- `0.0%st`:虛擬機被 `hpyervisor` 偷去的 CPU 時間
- 注釋:`hypervisor` 是一種運行在基礎物理服務器和操作系統(tǒng)之間的中間軟件層,可允許多個操作系統(tǒng)和應用共享硬件。也可叫做 VMM(虛擬機監(jiān)視器)。
`hypervisor` 是一種在虛擬環(huán)境中的 “元” 操作系統(tǒng)。他們可以訪問服務器上包括磁盤和內存在內的所有物理服務設備,`hypervisor` 補單協(xié)調著這些硬件資源的訪問,也同時在各個虛擬機之間施加防護。當服務器啟動并執(zhí)行 `hypervisor` 時,他回家再所有虛擬機客戶端的操作系統(tǒng),同時會分配給每一臺虛擬機適量的內存,cpu,網絡,磁盤。
備注:在這里 CPU 的使用比率和 win 上的概念不同,需要理解 linux 系統(tǒng)用戶空間和內核空間的相關知識!
- 第四行,內存狀態(tài),具體信息如下:
- `1922432k total`:物理內存總量 (20G)
- `156380k used`:使用中的內存總量 (1.5G)
- `1766052k free`:空閑內存總量 (17.5G)
- `13788k buffers`:緩存的內存量 (137M)
- 第五行,swap 交換分區(qū)信息,具體說明如下:
- `1048568k total` :交換區(qū)總量 (10G)
- `0k used `:使用的交換區(qū)總量 (0K)
- `1048568k free `:空閑交換區(qū)總量 (10 G)
- `63608k cached` :緩沖的交換區(qū)總量 (6M)
備注:第四行使用中的內存總量 (used) 指的是現(xiàn)在系統(tǒng)內核控制的內存書,空閑內存總量 (free) 是內核中還未納入其管控范圍的數(shù)量。納入內核管理的內存不見得都在使用中,還包括過去使用過的現(xiàn)在可以被重復利用的內存,內核并不把這些可被重新使用的內存交還到 free 中去,因此在 linux 上 free 內存會越來越少,但不必為此擔心。
如果出于習慣去計算可用內存書,這里有個近似的計算公式,第四行的 `free+` 第四行的 `buffers+` 第五行的 cached,按這個公式此臺服務器的可用內存:`1766052k + 13788k + 63608k =18.5G` 左右。
對于內存監(jiān)控,在 top 里我們要時刻監(jiān)控第五行 swap 交換分區(qū)的 used,如果這個數(shù)值在不斷的變化,說明內核在不斷進行內存和 swap 的數(shù)據(jù)交換,這是真正的內存不夠用了
- 第六行,空行
- 第七行以下,各進程 (任務) 的狀態(tài)監(jiān)控,項目列信息說明如下:
```項目列表名稱
說明
PID
進程 ID
USER
進程所有者
PR
進程優(yōu)先級
NI
nice 值。負值表示高優(yōu)先級,正值表示低優(yōu)先級
VIRT
進程使用的虛擬內存總量,單位 KB.VIRT=SWAP+RES
RES
進程使用的,違背換出的物理內存大小,單位 KB.RES=CODE+DATA
SHR
共享內存大小,單位 KB
S
進程狀態(tài).D(不可中斷的睡眠狀態(tài)),R,S,T(跟蹤 / 停止),Z
%CPU
上次更新到現(xiàn)在的 CPU 時間占用百分比
%MEM
進程使用的物理內存百分比
TIME+
進程使用的 CPU 時間總計,單位 1/100 秒
COMMAND
進程名稱 (命令行 / 命令名)
其他使用技巧:
多核 CPU 監(jiān)控
在 top
命令基本視圖中,按鍵盤數(shù)字"1"
,可監(jiān)控每個邏輯 CPU 的狀況,再按數(shù)字鍵 1,就會返回 top
基本視圖界面
高亮顯示當前運行進程
在 top
命令的試圖下,按下字母鍵 b
(打開 / 關閉加亮效果)
我們發(fā)現(xiàn) top
進程被加亮了,通配進程就是視圖第二行顯示的唯一的運行狀態(tài)的那個進程,可以通過字母鍵 y
關閉或打開運行狀態(tài)進程的加亮效果。
進程字段排序
默認進入 top
時,各進程是按照 CPU 的占用量來排序的,敲擊字母鍵 x
(打開 / 關閉排序列的加亮效果),可以看到 top
默認的排序列是 "%CPU"
。(centOS 貌似不行)
通過"shift+ 左右方向鍵"
可以向左或向右改變排序。(centOS 貌似不行)
top
交互模式 (就是說在進入 top
命令基本視圖中輸入,類似與 vim
)
在 top
命令執(zhí)行過程中可以使用的一些交互命令。這些命令都是單字母的,如果再命令行中使用的 s 選項,其中一些命令可能會被屏蔽。命令 說明 h 顯示幫助畫面,給出一些簡短的命令總結說明 k 終止一個進程 i 忽略閑置的僵死進程。這是一個開關式命令 q 退出 top r 重新安排一個進程的優(yōu)先級別 S 切換到累計模式 s 改變兩次刷新之間的延遲時間 (單位為 s),如果有小數(shù),就換算成 m s。輸入 0 值則系統(tǒng)將不斷刷新,默認值是 5s f 或者 F 從當前顯示中添加或刪除項目 o 或 O(字母) 改變顯示項目的順序 l(小寫字母) 切換顯示平均負載和啟動時間信息 m 切換顯示內存信息 t 切換顯示進程和 CPU 狀態(tài)信息 c 切換顯示命令名稱和完整命令行 M 根據(jù)駐留內存大小進行排序 P 根據(jù) CPU 適用百分比大小進行排序 T 根據(jù)時間 / 累計時間進行排序 W 將當前設置寫入~/.toprc 文件中