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