當(dāng)我們學(xué)習(xí)linux入門中的系統(tǒng)編程時,我們需要查看進(jìn)程狀態(tài)時,除了命令ps -ef之外,還有一個功能比較強(qiáng)大的top這個命令——top這個命令可以實時的監(jiān)測linux系統(tǒng)中的進(jìn)程狀態(tài),下面是我在網(wǎng)上查找的關(guān)于top這個命令的一個用法:
top命令是學(xué)習(xí)linux入門下常用的性能分析工具,能夠?qū)崟r顯示系統(tǒng)中各個進(jìn)程的資源占用狀況,類似于Windows的任務(wù)管理器。
1.命令格式:top
2.命令功能:顯示當(dāng)前系統(tǒng)正在執(zhí)行的進(jìn)程的相關(guān)信息,包括進(jìn)程ID、內(nèi)存占用率、CPU占用率等
前五行是當(dāng)前系統(tǒng)情況整體的統(tǒng)計信息區(qū)。
一、任務(wù)隊列信息,體參數(shù)說明情況如下:
11:07:21 — 當(dāng)前系統(tǒng)時間
up 49 days, 13:57 — 系統(tǒng)已經(jīng)運(yùn)行了49天13小時57分鐘(在這期間系統(tǒng)沒有重啟過的)
14 users — 當(dāng)前有14個用戶登錄系統(tǒng)
load average: 0.05, 0.07, 0.08: load average后面的三個數(shù)分別是1分鐘、5分鐘、15分鐘的負(fù)載情況。
load average數(shù)據(jù)是每隔5秒鐘檢查一次活躍的進(jìn)程數(shù),然后按特定算法計算出的數(shù)值。
如果這個數(shù)除以邏輯CPU的數(shù)量,結(jié)果高于5的時候就表明系統(tǒng)在超負(fù)荷運(yùn)轉(zhuǎn)了。
二、Tasks — 任務(wù)(進(jìn)程),具體信息說明如下:
系統(tǒng)現(xiàn)在共有228個進(jìn)程,其中處于運(yùn)行中的有1個,227個在休眠(sleep),stoped狀態(tài)的有0個,zombie狀態(tài)(僵尸)的有0個。
三、cpu狀態(tài)信息,具體屬性說明如下:
0.1%us — 用戶空間占用CPU的百分比。
0.2%sy — 內(nèi)核空間占用CPU的百分比。
0.0%ni — 改變過優(yōu)先級的進(jìn)程占用CPU的百分比
99.8%
id — 空閑CPU百分比
0.0%
wa — IO等待占用CPU的百分比
0.0%
hi — 硬中斷(Hardware IRQ)占用CPU的百分比
0.0%
si — 軟中斷(Software Interrupts)占用CPU的百分比0.0%
st - Steal time是當(dāng) hypervisor 服務(wù)另一個虛擬處理器的時候,虛擬CPU等待實際CPU的時間的百分比。
備注:在這里CPU的使用比率和windows概念不同,需要理解linux系統(tǒng)用戶空間和內(nèi)核空間的相關(guān)知識!
四、內(nèi)存狀態(tài),具體信息如下:
8062400k total — 物理內(nèi)存總量(8GB)
7524660k
used — 使用中的內(nèi)存總量(7.2GB)
537740k
free — 空閑內(nèi)存總量(0.51GB)
320932k
buffers — 緩存的內(nèi)存量 (313M)
五、swap交換分區(qū)信息,具體信息說明如下:
Swap: 16777208k total, 19292k used, 16757916k free, ?5245296k cached
16777208k
total — 交換區(qū)總量(16GB)
19292k used — 使用的交換區(qū)總量(18M)
16757916k free — 空閑交換區(qū)總量(16GB)
5245296k
cached — 緩沖的交換區(qū)總量(5GB)
備注:
第四行中使用中的內(nèi)存總量(used)指的是現(xiàn)在系統(tǒng)內(nèi)核控制的內(nèi)存數(shù),空閑內(nèi)存總量(free)是內(nèi)核還未納入其管控范圍的數(shù)量。
納入內(nèi)核管理的內(nèi)存不見得都在使用中,還包括過去使用過的現(xiàn)在可以被重復(fù)利用的內(nèi)存,內(nèi)核并不把這些可被重新使用的內(nèi)存交還到free中去,因此在學(xué)習(xí)linux入門上free內(nèi)存會越來越少,但不用為此擔(dān)心。如果出于習(xí)慣去計算可用內(nèi)存數(shù),這里有個近似的計算公式:第四行的free + 第四行的buffers + 第五行的cached,按這個公式此臺服務(wù)器的可用內(nèi)存:18537836k +169884k +3612636k = 22GB左右。
對于內(nèi)存監(jiān)控,在top里我們要時刻監(jiān)控第五行swap交換分區(qū)的used,如果這個數(shù)值在不斷的變化,說明內(nèi)核在不斷進(jìn)行內(nèi)存和swap的數(shù)據(jù)交換,這是真正的內(nèi)存不夠用了。
六、空行。
七、7行以下各進(jìn)程(任務(wù))的狀態(tài)監(jiān)控,項目列信息說明如下:
PID — 進(jìn)程id
USER — 進(jìn)程所有者
PR — 進(jìn)程優(yōu)先級
NI — nice值。
負(fù)值表示高優(yōu)先級,正值表示低優(yōu)先級
VIRT — 進(jìn)程使用的虛擬內(nèi)存總量,單位kb。
VIRT=SWAP+RES
RES — 進(jìn)程使用的、未被換出的物理內(nèi)存大小,單位kb。
RES=CODE+DATA
SHR — 共享內(nèi)存大小,單位kb
S — 進(jìn)程狀態(tài)。
D=不可中斷的睡眠狀態(tài) R=運(yùn)行 S=睡眠 T=跟蹤/停止 Z=僵尸進(jìn)程
%CPU — 上次更新到現(xiàn)在的CPU時間占用百分比
%MEM —進(jìn)程使用的物理內(nèi)存百分比
TIME+ — 進(jìn)程使用的CPU時間總計,單位1/100秒
COMMAND — 進(jìn)程名稱(命令名/命令行)
學(xué)習(xí)linux入門可到粵嵌教育,除此之外,粵嵌開設(shè)的課程還有java培訓(xùn)、H5培訓(xùn)、unity3D培訓(xùn)、Python培訓(xùn)等現(xiàn)在熱門的技術(shù),讓想要學(xué)習(xí)相關(guān)技術(shù)的學(xué)員有多種選擇,滿足社會技術(shù)人員的需求。