top介紹
top 命令是 Linux 下常用的系統資源佔用查看及性能分析工具,能夠實時顯示系統中各個進程的資源(比如cpu、內存的使用)佔用狀況,top命令的執行結果是一個動態顯示過程,即可以通過用戶按鍵來不斷刷新當前狀態.如果在前臺執行該命令,它將獨佔前臺,直到用戶終止該程序爲止.top命令提供了實時的對系統處理器的狀態監視.它將顯示系統中CPU最“敏感”的任務列表.該命令可以按CPU使用.內存使用和執行時間對任務進行排序;而且該命令的很多特性都可以通過交互式命令或者在個人定製文件中進行設定。top命令基本上是各個版本的linux的自帶命令,例如:CentOS,redhat,ubuntu等。
top格式
top -hv | -bcisSHM -d delay -n iterations [-u user | -U user] -p pid [,pid ...]
top參數
d 指定每兩次屏幕信息刷新之間的時間間隔(秒)。當然用戶可以使用s交互命令來改變之。
p 通過指定監控進程ID來僅僅監控某個進程的狀態。
q 該選項將使top沒有任何延遲的進行刷新。如果調用程序有超級用戶權限,那麼top將以儘可能高的優先級運行。
S 指定累計模式。
s 使top命令在安全模式中運行。這將去除交互命令所帶來的潛在危險。
i 使top不顯示任何閒置或者僵死進程。
c 顯示整個命令行而不只是顯示命令名。
-n :與 -b 搭配,意義是,需要進行幾次 top 的輸出結果。
-p :指定某些個 PID 來進行觀察監測而已。
在 top 執行過程當中可以使用的按鍵指令:
? :顯示在 top 當中可以輸入的按鍵指令;
P :以 CPU 的使用資源排序顯示;
M :以 Memory 的使用資源排序顯示;
N :以 PID 來排序喔!
T :由該 Process 使用的 CPU 時間累積 (TIME+) 排序。
k :給予某個 PID 一個訊號 (signal)
r :給予某個 PID 重新制訂一個 nice 值。
執行結果解釋
top
1.top行:
- 當前時間
- 系統已運行的時間
- 當前登錄用戶的數量
- 相應最近5、10和15分鐘內的平均負載。
可以使用'l'命令切換uptime的顯示。
21:45:11 — 當前系統時間
0 days, 4:54 — 系統已經運行了4小時54分鐘(在這期間沒有重啓過)
2 users — 當前有2個用戶登錄系統
load average:0.24, 0.15, 0.19 — load average後面的三個數分別是5分鐘、10分鐘、15分鐘的負載情況。load average數據是每隔5秒鐘檢查一次活躍的進程數,然後按特定算法計算出的數值。如果這個數除以邏輯CPU的數量,結果高於5的時候就表明系統在超負荷運轉了。
2.tasks行:
Tasks — 任務(進程),系統現在共有22個進程,其中處於運行中的有1個,11個在休眠(sleep),stoped狀態的有10個,zombie狀態(殭屍)的有0個。
第二行顯示的是任務或者進程的總結。進程可以處於不同的狀態。這裏顯示了全部進程的數量。除此之外,還有正在運行、睡眠、停止、殭屍進程的數量(殭屍是一種進程的狀態)。這些進程概括信息可以用't'切換顯示
3.cpu行:
這裏顯示不同模式下所佔cpu時間百分比,這些不同的cpu時間表示:
- us, user: 運行(未調整優先級的) 用戶進程的CPU時間
- sy,system: 運行內核進程的CPU時間
- ni,niced:運行已調整優先級的用戶進程的CPU時間
- wa,IO wait: 用於等待IO完成的CPU時間
- hi:處理硬件中斷的CPU時間
- si: 處理軟件中斷的CPU時間
- st:這個虛擬機被hypervisor偷去的CPU時間(譯註:如果當前處於一個hypervisor下的vm,實際上hypervisor也是要消耗一部分CPU處理時間的)。
可以使用't'命令切換顯示。
1.3% us — 用戶空間佔用CPU的百分比。
1.0% sy — 內核空間佔用CPU的百分比。
0.0% ni — 改變過優先級的進程佔用CPU的百分比
97.3% id — 空閒CPU百分比
0.0% wa — IO等待佔用CPU的百分比
0.3% hi — 硬中斷(Hardware IRQ)佔用CPU的百分比
0.0% si — 軟中斷(Software Interrupts)佔用CPU的百分比在這裏CPU的使用比率和windows概念不同,如果你不理解用戶空間和內核空間,需要充充電了。
4.mem行:swap行:
接下來兩行顯示內存使用率,有點像'free'命令。第一行是物理內存使用,第二行是虛擬內存使用(交換空間)。
物理內存顯示如下:全部可用內存、已使用內存、空閒內存、緩衝內存。相似地:交換部分顯示的是:全部、已使用、空閒和緩衝交換空間。
內存顯示可以用'm'命令切換。
509248k total — 物理內存總量(509M)
495964k used — 使用中的內存總量(495M)
13284k free — 空閒內存總量(13M)
25364k buffers — 緩存的內存量 (25M)
swap交換分區
492536k total — 交換區總量(492M)
11856k used — 使用的交換區總量(11M)
480680k free — 空閒交換區總量(480M)
202224k cached — 緩衝的交換區總量(202M)
這裏要說明的是不能用windows的內存概念理解這些數據,如果按windows的方式此臺服務器“危矣”:8G的內存總量只剩下530M的可用內存。Linux的內存管理有其特殊性,複雜點需要一本書來說明,這裏只是簡單說點和我們傳統概念(windows)的不同。
第四行中使用中的內存總量(used)指的是現在系統內核控制的內存數,空閒內存總量(free)是內核還未納入其管控範圍的數量。納入內核管理的內存不見得都在使用中,還包括過去使用過的現在可以被重複利用的內存,內核並不把這些可被重新使用的內存交還到free中去,因此在linux上free內存會越來越少,但不用爲此擔心。
如果出於習慣去計算可用內存數,這裏有個近似的計算公式:第四行的free + 第四行的buffers + 第五行的cached,按這個公式此臺服務器的可用內存:
13284+25364+202224 = 240M。
對於內存監控,在top裏我們要時刻監控第五行swap交換分區的used,如果這個數值在不斷的變化,說明內核在不斷進行內存和swap的數據交換,這是真正的內存不夠用了。
詳細行:
列名 含義
PID 進程id
PPID 父進程id
RUSER Realusername
UID 進程所有者的用戶id
USER 進程所有者的用戶名
GROUP 進程所有者的組名
TTY 啓動進程的終端名。不是從終端啓動的進程則顯示爲?
PR 優先級
NInice 值。負值表示高優先級,正值表示低優先級
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 若該進程在睡眠,則顯示睡眠中的系統函數名
使用技巧
1.多U多核CPU監控
在top基本視圖中,按鍵盤數字“1”,可監控每個邏輯CPU的狀況:邏輯上有4個,實際中只有1個,參見上下圖
f鍵,顯示每個字段的解釋,q鍵退出
2.高亮顯示當前運行進程
敲擊鍵盤“b”(打開/關閉加亮效果),top的視圖變化如下:
我們發現進程id爲2419的“top”進程被加亮了,top進程就是視圖第二行顯示的唯一的運行態(runing)的那個進程,可以通過敲擊“y”鍵關閉或打開運行態進程的加亮效果。
3.進程字段排序
默認進入top時,各進程是按照CPU的佔用量來排序的
敲擊鍵盤“x”(打開/關閉排序列的加亮效果)
4.通過”shift + >”或”shift + <”可以向右或左改變排序列
按一次”shift + >”的效果圖,視圖現在已經按照%MEM來排序,再按一次按時間排
5.top交互命令
h 顯示幫助畫面,給出一些簡短的命令總結說明
k 終止一個進程。
i 忽略閒置和僵死進程。這是一個開關式命令。
q 退出程序
r 重新安排一個進程的優先級別
S 切換到累計模式
s 改變兩次刷新之間的延遲時間(單位爲s
f或者F 從當前顯示中添加或者刪除項目
o或者O 改變顯示項目的順序
l 切換顯示平均負載和啓動時間信息
m 切換顯示內存信息
t 切換顯示進程和CPU狀態信息
c 切換顯示命令名稱和完整命令行
M 根據駐留內存大小進行排序
P 根據CPU使用百分比大小進行排序
T 根據時間/累計時間進行排序
W 將當前設置寫入~/.toprc文件中
顯示 完整命令
|
設置信息更新次數
1 |
|
設置信息更新時間
1 |
|