命令行輸入top,回車
13:42:59 當前系統時間
6 days, 9:29 系統已經運行了6天6小時29分鍾(在這期間沒有重啟過)
3 users 當前有3個用戶登錄系統
load average: 3.06,3.01, 1.79 load average後面的三個數分別是1分鍾、5分鍾、15分鍾的負載情況。
load average數據是每隔5秒鍾檢查一次活躍的進程數,然後按特定演算法計算出的數值。如果這個數除以邏輯CPU的數量,結果高於5的時候就表明系統在超負荷運轉了。
Tasks 任務(進程),系統現在共有131個進程,其中處於運行中的有3個,127個在休眠(sleep),stoped狀態的有0個,zombie狀態(僵屍)的有1個。
10.6% us 用戶空間佔用CPU的百分比。
2.2% sy 內核空間佔用CPU的百分比。
0.0% ni 改變過優先順序的進程佔用CPU的百分比
84.5% id 空閑CPU百分比
2.5% wa IO等待佔用CPU的百分比
0.1% hi 硬中斷(Hardware IRQ)佔用CPU的百分比
0.0% si 軟中斷(Software Interrupts)佔用CPU的百分比
在這里CPU的使用比率和windows概念不同,如果你不理解用戶空間和內核空間,需要充充電了。
8300124k total 物理內存總量(8GB)
5979476k used 使用中的內存總量(5.7GB)
2320648k free 空閑內存總量(2.2G)
455544k buffers 緩存的內存量 (434M)
第五行:swap交換分區
8193108k total 交換區總量(8GB)
41568k used 使用的交換區總量(40.6M)
8151540k free 空閑交換區總量(8GB)
4217456k cached 緩沖的交換區總量(4GB)
內存總量(used)指的是現在系統內核控制的內存數,空閑內存總量(free)是內核還未納入其管控范圍的數量。納入內核管理的內存不見得都在使用中,還包括過去使用過的現在可以被重復利用的內存,內核並不把這些可被重新使用的內存交還到free中去,因此在linux上free內存會越來越少,但不用為此擔心。
如果出於習慣去計算可用內存數,這里有個近似的計算公式:第四行的free + 第四行的buffers + 第五行的cached,按這個公式此台伺服器的可用內存:2320648+455544+4217456= 6.6GB。
對於內存監控,在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 進程名稱(命令名/命令行)
② 常用命令之TOP
android中TOP命令用於查看當前CPU負載、內存佔用、進程信息等。
第一行 ,進程信息:
系統現在共有668個進程,其中處於運行中的有1個,665個在休眠(sleep),stoped狀態的有0個,zombie狀態(僵屍)的有2個。
第二行 ,內存信息:
物理內存總量:3.5G
使用中的內存:3.1G
空閑的內存:466M
緩存的內存:96M
第三行 ,交御陪換分區,android中指ZRAM:
交換分區總量:2G
使用中的交換區:455M
空閑的交換區總量:1.5G
緩沖的交換區:1.4G
第四行 ,CPU狀態信息:
800%cpu
5%user - 用戶進程佔用cpu的百分比
0%nice - 優先值為負的進程所佔用的CPU時間
7%sys - 系統進程佔用cpu的百分比
788%idle - 空閑cpu百分比
1%iow - IO等待時間凱拆尺
0%irq - 硬中斷時間
0%sirq - 軟中斷時間
0%host -
第五行 ,各進程狀態監控:
PID — 進程id
USER — 進程所有者
PR — 進程優先順序
NI — nice值。負值表示高優先順序,正值表示低優先順序
VIRT — 進程使用的虛擬內存總量,VIRT=SWAP+RES
RES — 進程使用的、未被換出的物理內存大小,RES=CODE+DATA
SHR — 共享內存大小
S — 進程狀盯高態。D=不可中斷的睡眠狀態 R=運行 S=睡眠 T=跟蹤/停止 Z=僵屍進程
%CPU — 上次更新到現在的CPU時間佔用百分比
%MEM — 進程使用的物理內存百分比
TIME+ — 進程使用的CPU時間總計,單位1/100秒
ARGS — 進程名稱(命令名/命令行)
③ Linux TOP 命令
top命令分為匯總區和任務明細區
當前時間是15:39:37. 系統已經運行了90天,15個小時,26分鍾。當前有兩個活躍用戶
上下兩行以kb形式展示物理內存和swap內存的總計,空閑(free), 已使用(total)的情況
其中buff/cache ,是在cpu讀寫硬碟數據時,為了提速在內存中開辟的緩沖(buffer針對寫)或緩存區域(cache針對讀)
avail mem 是創建新進程時,在不使用swap分區的情況下,能夠分配的內存大小。這個大小可能比當前的free還大,這是因為buff/cache中的內存在創建進程時,若需要,也是可以搶占過來的。
總共有27個進程,1個運行,26的sleep中
load average後面的三組數字分別是1分鍾、5分鍾、15分鍾的工作負載情況。這里的Load指的出於R(runing)和D(Uninterruptible sleep)的兩種狀態下的進程數
在單核cpu情況下。load average 為0.4的表示,其cpu利用率只有40%。 load average 為1,表示cpu利用率為100。load average 為2.12說明,cpu已經超負荷112% (2.12減滿負荷1,即為超負荷部分)
在多核cpu的機器上,需要將以上的1,5,15的負載除以對應的cpu核數,才好評估對應的cpu的負載情況
比如,這個cpu為40核的機器上,其cpu過去一分鍾的使用情況為:8.26/40=0.2065 ,說明cpu使用率只有20%
展示每個進程的情況
在top名稱執行後,按小k,可以進入進程殺死對話框
在後面輸入進程號,即可殺死進程
在top命令下
按以下大寫字母,分別按不同的維度進行排序
當然你也可以在命令啟動時,直接對top加參數。比如以cpu使用情況排序
top命令默認顯示的進程的運行情況,在top命令執行後,按大寫的H,可進入線程執行情況頁面,再按一次H則會到進程展示。或者在啟動時對top加參數 top -H
在top執行後,按小c,則能夠展示進程路徑,並且對內核進程的名稱(command列),加上方括弧。再按c切換回去
當然也可以在啟動時,加參數 top -c
top執行後按大V
在top啟動後,按小寫u,在輸入框中輸入對應的用戶名
或者在top啟動時,通過加參數來過濾用戶 top -u root
在top啟動後,按大O,進入過濾表達式的輸入框
表達式有以下幾種類型
輸入等號'=',清除filter表達式
在top命令下,按t或m來進行進度條顯示
首先基於 ps aux | grep processName 找到對應進程的pid
然後使用 top -c -p pid 方式單過濾查看該進程的資源佔用情況
https://www.booleanworld.com/guide-linux-top-command/
④ Linux TOP命令按內存佔用排序和按CPU佔用排序
Linux存在著許多不同的Linux版本,但它們都使用了Linux內核。Linux可安裝在各種計算機硬體設備中,比如手機、平板電腦、路由器、視頻游戲控制台、台式計算機、大型機和超級計算機。下面讓我們一起去了解Linux TOP命令 按內存佔用排序和按CPU佔用排序。
Linux TOP命令 按內存佔用排序和按CPU佔用排序:
:在命令行提示符執行top命令
2:輸入大寫P,則結果按CPU佔用降序排序。輸入大寫M,結果按內存佔用降序排序。(註:大寫P可以在capslock狀態輸入p,或者按Shift+p)
另外:
認識top的顯示結果
top命令的顯示結果如下所示:
top - 01:06:48 up 1:22, 1 user, load average: 0.06, 0.60, 0.48 Tasks: 29 total, 1 running, 28 sleeping, 0 stopped, 0 zombie Cpu(s): 0.3% us, 1.0% sy, 0.0% ni, 98.7% id, 0.0% wa, 0.0% hi, 0.0% si Mem: 191272k total, 173656k used, 17616k free, 22052k buffers Swap: 192772k total, 0k used, 192772k free, 123988k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1379 root 16 0 7976 2456 1980 S 0.7 1.3 0:11.03 sshd 14704 root 16 0 2128 980 796 R 0.7 0.5 0:02.72 top 1 root 16 0 1992 632 544 S 0.0 0.3 0:00.90 init 2 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0 3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0統計信息區
前五行是系統整體的統計信息。第一行是任務隊列信息,同 uptime 命令的執行結果。其內容如下:
01:06:48當前時間
up 1:22系統運行時間,格式為時:分
1 user當前登錄用戶數
load average: 0.06, 0.60, 0.48系統負載,即任務隊列的平均長度。
三個數值分別為 1分鍾、5分鍾、15分鍾前到現在的平均值。
第二、三行為進程和CPU的信息。當有多個CPU時,這些內容可能會超過兩行。內容如下:
Tasks: 29 total進程總數
1 running正在運行的進程數
28 sleeping睡眠的進程數
0 stopped停止的進程數
0 zombie僵屍進程數
Cpu(s): 0.3% us用戶空間佔用CPU百分比
1.0% sy內核空間佔用CPU百分比
0.0% ni用戶進程空間內改變過優先順序的進程佔用CPU百分比
98.7% id空閑CPU百分比
0.0% wa等待輸入輸出的CPU時間百分比
0.0% hi
0.0% si
最後兩行為內存信息。內容如下:
Mem: 191272k total物理內存總量
173656k used使用的物理內存總量
17616k free空閑內存總量
22052k buffers用作內核緩存的內存量
Swap: 192772k total交換區總量
0k used使用的交換區總量
192772k free空閑交換區總量
123988k cached緩沖的交換區總量。
內存中的內容被換出到交換區,而後又被換入到內存,但使用過的交換區尚未被覆蓋,
該數值即為這些內容已存在於內存中的交換區的大小。
相應的內存再次被換出時可不必再對交換區寫入。
進程信息區
統計信息區域的下方顯示了各個進程的詳細信息。首先來認識一下各列的含義。
序號列名含義
aPID進程id
bPPID父進程id
cRUSERReal user name
dUID進程所有者的用戶id
eUSER進程所有者的用戶名
fGROUP進程所有者的組名
gTTY啟動進程的終端名。不是從終端啟動的進程則顯示為 ?
hPR優先順序
iNInice值。負值表示高優先順序,正值表示低優先順序
jP最後使用的CPU,僅在多CPU環境下有意義
k%CPU上次更新到現在的CPU時間佔用百分比
lTIME進程使用的CPU時間總計,單位秒
mTIME+進程使用的CPU時間總計,單位1/100秒
n%MEM進程使用的物理內存百分比
oVIRT進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES
pSWAP進程使用的虛擬內存中,被換出的大小,單位kb。
qRES進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA
rCODE可執行代碼佔用的物理內存大小,單位kb
sDATA可執行代碼以外的部分(數據段+棧)佔用的物理內存大小,單位kb
tSHR共享內存大小,單位kb
unFLT頁面錯誤次數
vnDRT最後一次寫入到現在,被修改過的頁面數。
wS進程狀態。
D=不可中斷的睡眠狀態
R=運行
S=睡眠
T=跟蹤/停止
Z=僵屍進程
xCOMMAND命令名/命令行
yWCHAN若該進程在睡眠,則顯示睡眠中的系統函數名
zFlags任務標志,參考 sched.h
默認情況下僅顯示比較重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。可以通過下面的快捷鍵來更改顯示內容。
更改顯示內容
通過 f 鍵可以選擇顯示的內容。按 f 鍵之後會顯示列的列表,按 a-z 即可顯示或隱藏對應的列,最後按回車鍵確定。
按 o 鍵可以改變列的顯示順序。按小寫的 a-z 可以將相應的列向右移動,而大寫的 A-Z 可以將相應的列向左移動。最後按回車鍵確定。
按大寫的 F 或 O 鍵,然後按 a-z 可以將進程按照相應的列進行排序。而大寫的 R 鍵可以將當前的排序倒轉。