Linux?top命令詳解
top命令是Linux下常用的性能分析工具,能夠?qū)崟r顯示系統(tǒng)中各個進程的資源占用狀況,類似于Windows的任務(wù)管理器
top參數(shù)詳解
第一行,任務(wù)隊列信息,同 uptime 命令的執(zhí)行結(jié)果
系統(tǒng)時間:07:27:05
運行時間:up 1:57 min,
當前登錄用戶: 3 user
負載均衡(uptime) load average: 0.00, 0.00, 0.00
average后面的三個數(shù)分別是1分鐘、5分鐘、15分鐘的負載情況。
load average數(shù)據(jù)是每隔5秒鐘檢查一次活躍的進程數(shù),然后按特定算法計算出的數(shù)值。如果這個數(shù)除以邏輯CPU的數(shù)量,結(jié)果高于5的時候就表明系統(tǒng)在超負荷運轉(zhuǎn)了
第二行,Tasks — 任務(wù)(進程)
總進程:150 total, 運行:1 running, 休眠:149 sleeping, 停止: 0 stopped, 僵尸進程: 0 zombie
第三行,cpu狀態(tài)信息
0.0%us【user space】— 用戶空間占用CPU的百分比。
0.3%sy【sysctl】— 內(nèi)核空間占用CPU的百分比。
0.0%ni【】— 改變過優(yōu)先級的進程占用CPU的百分比
99.7%id【idolt】— 空閑CPU百分比
0.0%wa【wait】— IO等待占用CPU的百分比
0.0%hi【Hardware IRQ】— 硬中斷占用CPU的百分比
0.0%si【Software Interrupts】— 軟中斷占用CPU的百分比
第四行,內(nèi)存狀態(tài)
1003020k total, 234464k used, 777824k free, 24084k buffers【緩存的內(nèi)存量】
第五行,swap交換分區(qū)信息
2031612k total, 536k used, 2031076k free, 505864k cached【緩沖的交換區(qū)總量】
備注:
可用內(nèi)存=free + buffer + cached
對于內(nèi)存監(jiān)控,在top里我們要時刻監(jiān)控第五行swap交換分區(qū)的used,如果這個數(shù)值在不斷的變化,說明內(nèi)核在不斷進行內(nèi)存和swap的數(shù)據(jù)交換,這是真正的內(nèi)存不夠用了。
第四行中使用中的內(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中去,因此在linux上free內(nèi)存會越來越少,但不用為此擔(dān)心。
第六行,空行
第七行以下:各進程(任務(wù))的狀態(tài)監(jiān)控
PID — 進程id
USER — 進程所有者
PR — 進程優(yōu)先級
NI — nice值。負值表示高優(yōu)先級,正值表示低優(yōu)先級
VIRT — 進程使用的虛擬內(nèi)存總量,單位kb。VIRT=SWAP+RES
RES — 進程使用的、未被換出的物理內(nèi)存大小,單位kb。RES=CODE+DATA
SHR — 共享內(nèi)存大小,單位kb
S —進程狀態(tài)。D=不可中斷的睡眠狀態(tài) R=運行 S=睡眠 T=跟蹤/停止 Z=僵尸進程
%CPU — 上次更新到現(xiàn)在的CPU時間占用百分比
%MEM — 進程使用的物理內(nèi)存百分比
TIME+ — 進程使用的CPU時間總計,單位1/100秒
COMMAND — 進程名稱(命令名/命令行)
詳解
VIRT:virtual memory usage 虛擬內(nèi)存
1、進程“需要的”虛擬內(nèi)存大小,包括進程使用的庫、代碼、數(shù)據(jù)等
2、假如進程申請100m的內(nèi)存,但實際只使用了10m,那么它會增長100m,而不是實際的使用量
RES:resident memory usage 常駐內(nèi)存
1、進程當前使用的內(nèi)存大小,但不包括swap out
2、包含其他進程的共享
3、如果申請100m的內(nèi)存,實際使用10m,它只增長10m,與VIRT相反
4、關(guān)于庫占用內(nèi)存的情況,它只統(tǒng)計加載的庫文件所占內(nèi)存大小
SHR:shared memory 共享內(nèi)存
1、除了自身進程的共享內(nèi)存,也包括其他進程的共享內(nèi)存
2、雖然進程只使用了幾個共享庫的函數(shù),但它包含了整個共享庫的大小
3、計算某個進程所占的物理內(nèi)存大小公式:RES – SHR
4、swap out后,它將會降下來
DATA
1、數(shù)據(jù)占用的內(nèi)存。如果top沒有顯示,按f鍵可以顯示出來。
2、真正的該程序要求的數(shù)據(jù)空間,是真正在運行中要使用的。
top 運行中可以通過 top 的內(nèi)部命令對進程的顯示方式進行控制。內(nèi)部命令如下:
s – 改變畫面更新頻率
l – 關(guān)閉或開啟第一部分第一行 top 信息的表示
t – 關(guān)閉或開啟第一部分第二行 Tasks 和第三行 Cpus 信息的表示
m – 關(guān)閉或開啟第一部分第四行 Mem 和 第五行 Swap 信息的表示
N – 以 PID 的大小的順序排列表示進程列表
P – 以 CPU 占用率大小的順序排列進程列表
M – 以內(nèi)存占用率大小的順序排列進程列表
h – 顯示幫助
n – 設(shè)置在進程列表所顯示進程的數(shù)量
q – 退出 top
s – 改變畫面更新周期
top使用方法
使用格式:
top [-] [d] [p] [q] [c] [C] [S] [s] [n]
參數(shù)說明:
d:指定每兩次屏幕信息刷新之間的時間間隔。當然用戶可以使用s交互命令來改變之。
p:通過指定監(jiān)控進程ID來僅僅監(jiān)控某個進程的狀態(tài)。
q:該選項將使top沒有任何延遲的進行刷新。如果調(diào)用程序有超級用戶權(quán)限,那么top將以盡可能高的優(yōu)先級運行。
S:指定累計模式。
s:使top命令在安全模式中運行。這將去除交互命令所帶來的潛在危險。
i:使top不顯示任何閑置或者僵死進程。
c:顯示整個命令行而不只是顯示命令名。
常用命令說明
Ctrl+L:擦除并且重寫屏幕
K:終止一個進程。系統(tǒng)將提示用戶輸入需要終止的進程PID,以及需要發(fā)送給該進程什么樣的信號。一般的終止進程可以使用15信號;如果不能正常結(jié)束那就使用信號9強制結(jié)束該進程。默認值是信號15。在安全模式中此命令被屏蔽。
i:忽略閑置和僵死進程。這是一個開關(guān)式命令。
q:退出程序
r:重新安排一個進程的優(yōu)先級別。系統(tǒng)提示用戶輸入需要改變的進程PID以及需要設(shè)置的進程優(yōu)先級值。輸入一個正值將使優(yōu)先級降低,反之則可以使該進程擁有更高的優(yōu)先權(quán)。默認值是10。
S:切換到累計模式。
s:改變兩次刷新之間的延遲時間。系統(tǒng)將提示用戶輸入新的時間,單位為s。如果有小數(shù),就換算成m s。輸入0值則系統(tǒng)將不斷刷新,默認值是5 s。需要注意的是如果設(shè)置太小的時間,很可能會引起不斷刷新,從而根本來不及看清顯示的情況,而且系統(tǒng)負載也會大大增加。
f或者F:從當前顯示中添加或者刪除項目。
o或者O:改變顯示項目的順序
l:切換顯示平均負載和啟動時間信息。
m:切換顯示內(nèi)存信息。
t:切換顯示進程和CPU狀態(tài)信息。
c:切換顯示命令名稱和完整命令行。
M:根據(jù)駐留內(nèi)存大小進行排序。
P:根據(jù)CPU使用百分比大小進行排序。
T:根據(jù)時間/累計時間進行排序。
W:將當前設(shè)置寫入~/.toprc文件中。
查看多核CPU命令
mpstat-PALL和sar-PALL
說明:sar-PALL>aaa.txt重定向輸出內(nèi)容到文件aaa.txt
1 top 命令,然后按數(shù)字“1”可監(jiān)控每個邏輯CPU的狀況:
觀察上圖,服務(wù)器有8個邏輯CPU,實際上是1個物理CPU。
如果不按1,則在top視圖里面顯示的是所有cpu的平均值。
2 命令:mpstat -P ALL
3 命令:sar -P ALL
輸出較多,可grep或者重定向至文件查看
進程字段排序
默認進入top時,各進程是按照CPU的占用量來排序的,在【top視圖01】中進程ID為14210的java進程排在第一(cpu占用100%),進程ID為14183的java進程排在第二(cpu占用12%)。可通過鍵盤指令來改變排序字段,比如想監(jiān)控哪個進程占用MEM最多,我一般的使用方法如下:
1.敲擊鍵盤“b”(打開/關(guān)閉加亮效果),top的視圖變化如下:
我們發(fā)現(xiàn)進程id為12363的“top”進程被加亮了,top進程就是視圖第二行顯示的唯一的運行態(tài)(runing)的那個進程,可以通過敲擊“y”鍵關(guān)閉或打開運行態(tài)進程的加亮效果。
2.敲擊鍵盤“x”(打開/關(guān)閉排序列的加亮效果),top的視圖變化如下:
可以看到,top默認的排序列是“%CPU”。
3.通過”shift+>”或”shift+<”可以向右或左改變排序列,下圖是按一次”shift+>”的效果圖:
視圖現(xiàn)在已經(jīng)按照%MEM來排序了。
改變進程顯示字段
1.敲擊“f”鍵,top進入另一個視圖,在這里可以編排基本視圖中的顯示字段:
這里列出了所有可在top基本視圖中顯示的進程字段,有”*”并且標注為大寫字母的字段是可顯示的,沒有”*”并且是小寫字母的字段是不顯示的。如果要在基本視圖中顯示“CODE”和“DATA”兩個字段,可以通過敲擊“r”和“s”鍵:
2.“回車”返回基本視圖,可以看到多了“CODE”和“DATA”兩個字段:
Linux查看物理CPU個數(shù)、核數(shù)、邏輯CPU個數(shù)
復(fù)制代碼# 總核數(shù) = 物理CPU個數(shù) X 每顆物理CPU的核數(shù) # 總邏輯CPU數(shù) = 物理CPU個數(shù) X 每顆物理CPU的核數(shù) X 超線程數(shù) # 查看物理CPU個數(shù) cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l # 查看每個物理CPU中core的個數(shù)(即核數(shù)) cat /proc/cpuinfo| grep "cpu cores"| uniq # 查看邏輯CPU的個數(shù) cat /proc/cpuinfo| grep "processor"| wc -l
查看CPU信息(型號)
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
查看內(nèi) 存信息
# cat /proc/meminfo
Free 命令
free查看總內(nèi)存,使用空閑情況
$ free -m total used free shared buff/cache available Mem: 7666 4275 680 2 2711 3095 Swap: 0 0 0
字段說明:
- total:總計物理內(nèi)存的大小
- used:已使用多大
- free:可用有多少
- Shared:多個進程共享的內(nèi)存總額
- Buffers/cached:磁盤緩存的大小
Vmstat 命令
查看CPU使用率、內(nèi)存情況、IO讀寫情況
$ vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 3 0 0 706708 1044 2768928 0 0 3822 80 0 0 11 7 78 4 0
字段說明:
Procs(進程):
- r: 運行隊列中進程數(shù)量,這個值也可以判斷是否需要增加CPU。(長期大于1)
- b: 等待IO的進程數(shù)量
Memory(內(nèi)存):
- swpd: 使用虛擬內(nèi)存大小
- free: 空閑物理內(nèi)存大小
- buff: 用作緩沖的內(nèi)存大小
- cache: 用作緩存的內(nèi)存大小
Swap:
- si: 每秒從交換區(qū)寫到內(nèi)存的大小,由磁盤調(diào)入內(nèi)存
- so: 每秒寫入交換區(qū)的內(nèi)存大小,由內(nèi)存調(diào)入磁盤
IO:
- bi: 每秒讀取的塊數(shù)
- bo: 每秒寫入的塊數(shù)
系統(tǒng):
- in: 每秒中斷數(shù),包括時鐘中斷。
- cs: 每秒上下文切換數(shù)。
CPU(以百分比表示):
- us: 用戶進程執(zhí)行時間百分比(user time)
- sy: 內(nèi)核系統(tǒng)進程執(zhí)行時間百分比(system time)
- wa: IO等待時間百分比
- id: 空閑時間百分比
到此這篇關(guān)于Linux top命令詳解的文章就介紹到這了,更多相關(guān)Linux top命令內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
shell實現(xiàn)自動備份mysql、整站數(shù)據(jù)的兩個腳本分享
這篇文章主要介紹了shell實現(xiàn)自動備份mysql、整站數(shù)據(jù)的兩個腳本分享,使用了cron實現(xiàn)實現(xiàn)定時備份,并會自動刪除N天前的備份,以及自動FTP上傳到別的服務(wù)器,需要的朋友可以參考下2014-06-06Shell eval通過變量獲取環(huán)境變量的方法實現(xiàn)
這篇文章主要介紹了Shell eval通過變量獲取環(huán)境變量的方法實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12解決VirtualBox中Ubuntu 14.04屏幕分辨率不能設(shè)置的問題
下面小編就為大家?guī)硪黄鉀QVirtualBox中Ubuntu 14.04屏幕分辨率不能設(shè)置的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-05