top命令詳解

CentOS 7 的top命令常常用來監控Linux的系統情況,好比cpu、內存的使用、進程情況等。linux

剛進入top界面,默認是按%CPU從高到低排序的:web

來結合這個視圖講解各個數據的含義。shell

系統平均負載數據庫

第一行:這和 uptime 命令的輸出是同樣的:

12:44:24 — 當前系統時間
2 days, 8:40 — 系統已經運行了2天8小時40分鐘(在這期間沒有重啓過)
1 users — 當前有1個用戶登陸系統
load average: 2.63, 2.72, 2.75 — load average後面的三個數分別是1分鐘、5分鐘、15分鐘的負載狀況。若是數值大於CUP核數,就說明CUP超載了。(好比系統平均負載:4核CPU狀況下,0.00 表示沒有任何負荷,4.00表示恰好滿負荷,超過4側表示超負荷,理想值是2.8;)

任務信息彙總緩存

第二行:安全

在 linux 系統中,通常把進程和線程統稱爲任務。第二行信息是對當前系統中全部任務的統計:
Tasks — 任務(進程),系統如今共有204個進程,其中處於運行中的有4個,200個在休眠(sleep),stoped狀態的有0個,zombie狀態(殭屍)的有0個。
說下殭屍進程:是由於子進程在沒有執行完畢以前,本身的父進程被kill掉,父進程沒法通知內核清理回收;子進程就成爲了一個沒孃的孩子,任由它自身自滅。服務器

CPU 信息app

第三行顯示 CPU 的使用狀況:性能


這裏一共有八個字段,是咱們瞭解 CPU 負載的主要依據,下面咱們逐一介紹。
us
進程在用戶地址空間中消耗 CPU 時間的百分比。像 shell程序、各類語言的編譯器、數據庫應用、web 服務器和各類桌面應用都算是運行在用戶地址空間的進程。這些程序若是不是處於 idle 狀態,那麼絕大多數的 CPU 時間都是運行在用戶態。
sy
進程在內核地址空間中消耗 CPU 時間的百分比。全部進程要使用的系統資源都是由 Linux 內核處理的。當處於用戶態(用戶地址空間)的進程須要使用系統的資源時,好比須要分配一些內存、或是執行 IO 操做、再或者是去建立一個子進程,此時就會進入內核態(內核地址空間)運行。事實上,決定進程在下一時刻是否會被運行的進程調度程序就運行在內核態。對於操做系統的設計來講,消耗在內核態的時間應該是越少越好。在實踐中有一類典型的狀況會使 sy 變大,那就是大量的 IO 操做,所以在調查 IO 相關的問題時須要着重關注它。
ni
ni 是 nice 的縮寫,能夠經過 nice 值調整進程用戶態的優先級。這裏顯示的 ni 表示調整過 nice 值的進程消耗掉的 CPU 時間。若是系統中沒有進程被調整過 nice 值,那麼 ni 就顯示爲 0。
id
CPU 處於 idle 狀態的百分比。通常狀況下, us + ni + id 應該接近 100%。
wa
CPU 等待磁盤 IO 操做的時間。和 CPU 的處理速度相比,磁盤 IO 操做是很是慢的。有不少這樣的操做,好比:CPU 在啓動一個磁盤讀寫操做後,須要等待磁盤讀寫操做的結果。在磁盤讀寫操做完成前,CPU 只能處於空閒狀態。Linux 系統在計算系統平均負載時會把 CPU 等待 IO 操做的時間也計算進去,因此在咱們看到系統平均負載太高時,能夠經過 wa 來判斷系統的性能瓶頸是否是過多的 IO 操做形成的。
hi & si
這兩個值表示系統處理中斷消耗的時間。中斷分爲硬中斷和軟中斷,hi 表示處理硬中斷消耗的時間,si 表示處理軟中斷消耗的時間。硬中斷是硬盤、網卡等硬件設備發送給 CPU 的中斷消息,當 CPU 收到中斷消息後須要進行適當的處理(消耗 CPU 時間)。軟中斷是由程序發出的中斷,最終也會執行相應的處理程序(消耗 CPU 時間)。
st
只有 Linux 在做爲虛擬機運行時 st 纔是有意義的。它表示虛機等待 CPU 資源的時間(虛機分到的是虛擬 CPU,當須要真實的 CPU 時,可能真實的 CPU 正在運行其它虛機的任務,因此須要等待)。
小寫字母 t 能夠控制是否顯示任務信息彙總和 CPU 信息。沒錯,它能控制是否顯示兩行信息。ui

內存信息

第4、五行:內存信息包含兩行內容,內存和交換空間:至關於執行free命令的結果。


1865284 total — 物理內存總量(1.865284GB)
81140 free — 空閒內存總量(81.14M)
1401604 used — 使用中的內存總量(1.401604GB)
382540 buff/cache — 緩存的內存量 (382.54M)
239704 avail Mem  --- 活動的,也就是真正能夠用的內存(239.704M)

說明下他們之間的關係:
1865284 total=81140 free + 1401604 used + 382540 buff/cache
239704 avail Mem=382540 buff/cache + 81140 free - 固定不可用的內存

CentOS 6 free命令的區別:

total 1004112(本機總物理內存)= used 351100 (已分配的內存)+ free 653012 (未分配的內存) 或者
total 1004112(本機總物理內存)= used 275936(分配已使用的內存)+ free 728176  (未使用的總內存)
used 351100 (已分配的內存)    = buffers 15564 + cached 59600 (已分配未使用的內存) + used 275936(分配已使用的內存)
free 728176  (未使用的總內存) = buffers 15564 + cached 59600 (已分配未使用的內存) + free 653012 (未分配的內存)

第五行:swap交換分區(沒有分交互分區)
0 total — 交換區總量
0 used — 使用的交換區總量
0 free — 空閒交換區總量

第六行默認是空行

任務詳情

第七行如下:默認狀況下這裏會顯示 12 列數據,都是咱們比較關心的進行相關的信息,下面咱們一個一個的介紹。
PID 表示進程 ID。
USER 表示進程全部者的有效用戶名稱。
PR 表示進程執行的優先級,PR 的值是以 Linux 內核的視角看到的進程執行的優先級。
NI 從用戶視角看到的進程執行優先級。注意 NI 值爲 -20 的進程,它們的 PR 值都是 0。
VIRT 表示進程使用的虛擬內存大小。
RES 表示進程使用的物理內存大小。
SHR 表示進程使用的共享內存的大小。
S 表示進程當前的狀態。S 值有下面幾種:
  D 不可中斷的睡眠狀態(uninterruptible sleep)
  R 正在運行的狀態(running)
  S 睡眠狀態(sleeping)
  T 跟蹤或中止狀態(traced or stopped)
  Z 殭屍狀態(zombie)
%CPU 表示進程使用 CPU 的百分比。
%MEM 表示進程使用內存的百分比。
TIME+ 表示進程累計使用的 CPU 時間。
COMMAND 表示運行進程對應的程序。

通常狀況下這些信息足夠了,可是若是你還想要更多的信息,按下小寫字母 f 能夠進入任務信息的配置界面。

一些經常使用指令的用法:

剛進入top界面:

按下「b」鍵以後:

按下「x」鍵以後:

按1能夠查看有幾核CUP及各個CUP的當前狀態:

一些經常使用的命令N鍵PID、C鍵%CPU、 M鍵%MEM 、 T 鍵TIME+ 、 進行排序,R列的升降序切換,也能夠shift + < 或者 shift + > 進行列的切換。1爲查看CPU核數。

其餘實用命令:從使用角度來看,熟練的掌握這些命令比掌握選項還重要一些。這些命令都是單字母的,若是在命令行選項中使用了s選項,則可能其中一些命令會被屏蔽掉。

h或者? 顯示幫助畫面,給出一些簡短的命令總結說明。
Help for Interactive Commands - procps version 3.2.8
Window 1:Def: Cumulative mode Off. System: Delay 3.0 secs; Secure mode Off.
Z,B    Global: 'Z' change color mappings; 'B' disable/enable bold
Z:修改顏色配置;B:關閉/開啓粗體
l,t,m   Toggle Summaries: 'l' load avg; 't' task/cpu stats; 'm' mem info
l:隱藏/顯示第1行負載信息;t:隱藏/顯示第2~3行CPU信息;m:隱藏/顯示第4~5行內存信息;
1,I    Toggle SMP view: '1' single/separate states; 'I' Irix/Solaris mode
1:單行/多行顯示CPU信息;I:Irix/Solaris模式切換
f,o   . Fields/Columns: 'f' add or remove; 'o' change display order
f:列顯示控制;o:列排序控制,按字母進行調整
F or O . Select sort field 選擇排序列
<,>   . Move sort field: '<' next col left; '>' next col right 上下移動內容
R,H   . Toggle: 'R' normal/reverse sort; 'H' show threads
R:內容排序;H:顯示線程
c,i,S  . Toggle: 'c' cmd name/line; 'i' idle tasks; 'S' cumulative time
c:COMMAND列命令名稱與完整命令行路徑切換;i:忽略閒置和僵死進程開關;S:累計模式切換
x,y   . Toggle highlights: 'x' sort field; 'y' running tasks
x:列排序;y:運行任務
z,b   . Toggle: 'z' color/mono; 'b' bold/reverse (only if 'x' or 'y')
z:顏色模式;b:粗體開關 僅適用於x,y模式中
u . Show specific user only 按用戶進行過濾,當輸入錯誤可按Ctrl + Backspace進行刪除
n or # . Set maximum tasks displayed 設置進程最大顯示條數
k,r    Manipulate tasks: 'k' kill; 'r' renice
k:終止一個進程;r:從新設置一個進程的優先級別
d or s  Set update interval 改變兩次刷新之間的延遲時間(單位爲s),若是有小數,就換算成ms。輸入0值則系統將不斷刷新,默認值是5s;
W Write configuration file 將當前設置寫入~/.toprc文件中
q Quit   退出

( commands shown with '.' require a visible task display window )
注意:帶.的命令須要一個可見的任務顯示窗口

top命令使用使用格式:
top [-] [d] [p] [q] [c] [C] [S] [s]  [n]
參數說明
d 指定每兩次屏幕信息刷新之間的時間間隔。固然用戶可使用s交互命令來改變之。
p 經過指定監控進程ID來僅僅監控某個進程的狀態。
q 該選項將使top沒有任何延遲的進行刷新。若是調用程序有超級用戶權限,那麼top將以儘量高的優先級運行。
S 指定累計模式
s 使top命令在安全模式中運行。這將去除交互命令所帶來的潛在危險。
i 使top不顯示任何閒置或者僵死進程。
c 顯示整個命令行而不僅是顯示命令名

附經常使用操做:top             //每隔5秒顯式全部進程的資源佔用狀況top -d 2         //每隔2秒顯式全部進程的資源佔用狀況top -c          //每隔5秒顯式進程的資源佔用狀況,並顯示進程的命令行參數(默認只有進程名)top -p 12345 -p 6789 //每隔5秒顯示pid是12345和pid是6789的兩個進程的資源佔用狀況top -d 2 -c -p 123456 //每隔2秒顯示pid是12345的進程的資源使用狀況,並顯式該進程啓動的命令行參數

相關文章
相關標籤/搜索