top命令
top命令是Linux下常用的性能分析工具,能夠?qū)崟r(shí)顯示系統(tǒng)中各個(gè)進(jìn)程的資源占用狀況,類(lèi)似于Windows的任務(wù)管理器。top是一個(gè)動(dòng)態(tài)顯示過(guò)程,即可以通過(guò)用戶(hù)按鍵來(lái)不斷刷新當(dāng)前狀態(tài).如果在前臺(tái)執(zhí)行該命令,它將獨(dú)占前臺(tái),直到用戶(hù)終止該程序?yàn)橹?比較準(zhǔn)確的說(shuō),top命令提供了實(shí)時(shí)的對(duì)系統(tǒng)處理器的狀態(tài)監(jiān)視.它將顯示系統(tǒng)中CPU最“敏感”的任務(wù)列表.該命令可以按CPU使用.內(nèi)存使用和執(zhí)行時(shí)間對(duì)任務(wù)進(jìn)行排序;而且該命令的很多特性都可以通過(guò)交互式命令或者在個(gè)人定制文件中進(jìn)行設(shè)定.
格式:
top [option]1
選項(xiàng):
-b:以批處理模式操作
-c:顯示完整的治命令
-d:屏幕刷新間隔時(shí)間
-I:忽略失效過(guò)程
-s:保密模式
-S:累積模式
-i<時(shí)間>:設(shè)置間隔時(shí)間
-u<用戶(hù)名>:指定用戶(hù)名
-p<進(jìn)程號(hào)>:指定進(jìn)程
-n<次數(shù)>:循環(huán)顯示的次數(shù)。
top交互命令:
h 顯示幫助畫(huà)面,給出一些簡(jiǎn)短的命令總結(jié)說(shuō)明
k 終止一個(gè)進(jìn)程。
i 忽略閑置和僵死進(jìn)程。這是一個(gè)開(kāi)關(guān)式命令。
q 退出程序
r 重新安排一個(gè)進(jìn)程的優(yōu)先級(jí)別
S 切換到累計(jì)模式
s 改變兩次刷新之間的延遲時(shí)間(單位為s),如果有小數(shù),就換算成m s。輸入0值則系統(tǒng)將不斷刷新,默認(rèn)值是5 s
f或者F 從當(dāng)前顯示中添加或者刪除項(xiàng)目
o或者O 改變顯示項(xiàng)目的順序
l 切換顯示平均負(fù)載和啟動(dòng)時(shí)間信息
m 切換顯示內(nèi)存信息
t 切換顯示進(jìn)程和CPU狀態(tài)信息
c 切換顯示命令名稱(chēng)和完整命令行
M 根據(jù)駐留內(nèi)存大小進(jìn)行排序
P 根據(jù)CPU使用百分比大小進(jìn)行排序
T 根據(jù)時(shí)間/累計(jì)時(shí)間進(jìn)行排序
W 將當(dāng)前設(shè)置寫(xiě)入~/.toprc文件中
free
free命令可以顯示當(dāng)前系統(tǒng)已經(jīng)使用和未使用的內(nèi)存數(shù)據(jù),包括物理內(nèi)存、交換區(qū)內(nèi)存和內(nèi)核緩沖區(qū)內(nèi)存。
格式:
free [option]1
選項(xiàng):
-b:以Byte為單位顯示內(nèi)存使用情況
-k:以KB為單位顯示內(nèi)存使用情況
-m:以MB為單位顯示內(nèi)存使用情況
-o:不顯示緩沖區(qū)調(diào)節(jié)列
-s<間隔秒數(shù)>:持續(xù)觀察內(nèi)存使用狀況
-t:顯示內(nèi)存總和列
-v:顯示版本信息。
常用命令:
$ free -g
$ free -m12
vmstat命令
vmstat(Virtual Memory Statistics,虛擬內(nèi)存統(tǒng)計(jì))命令,可對(duì)操作系統(tǒng)的虛擬內(nèi)存、進(jìn)程、CPU活動(dòng)進(jìn)行監(jiān)測(cè)。
格式:
vmstat [option] [para]1
選項(xiàng):
-a:顯示活動(dòng)內(nèi)頁(yè)
-f:顯示啟動(dòng)后創(chuàng)建的進(jìn)程總數(shù)
-m:顯示slab信息
-n:頭信息僅顯示一次
-s:以表格方式顯示事件計(jì)數(shù)器和內(nèi)存狀態(tài)
-d:報(bào)告磁盤(pán)狀態(tài)
-p:顯示指定的硬盤(pán)分區(qū)狀態(tài)
-S:輸出信息的單位。
參數(shù):
事件間隔:狀態(tài)信息刷新的時(shí)間間隔
次數(shù):顯示報(bào)告的次數(shù)
應(yīng)用實(shí)例:
[shmilychan@localhost ~]$ vmstat 5procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 468608 14560 705972 0 0 1 0 29 45 0 0 100 0 0
1 0 0 468540 14560 706004 0 0 0 0 269 312 2 1 97 0 0
0 0 0 468588 14560 706004 0 0 0 0 395 406 3 2 95 0123456
字段說(shuō)明:
Procs(進(jìn)程)
r: 運(yùn)行隊(duì)列中進(jìn)程數(shù)量,這個(gè)值也可以判斷是否需要增加CPU。(長(zhǎng)期大于1)
b: 等待IO的進(jìn)程數(shù)量。
Memory(內(nèi)存)
swpd: 使用虛擬內(nèi)存大小,如果swpd的值不為0,但是SI,SO的值長(zhǎng)期為0,這種情況不會(huì)影響系統(tǒng)性能。
free: 空閑物理內(nèi)存大小。
buff: 用作緩沖的內(nèi)存大小。
cache: 用作緩存的內(nèi)存大小,如果cache的值大的時(shí)候,說(shuō)明cache處的文件數(shù)多,如果頻繁訪問(wèn)到的文件都能被cache處,那么磁盤(pán)的讀IO bi會(huì)非常小。
Swap
si: 每秒從交換區(qū)寫(xiě)到內(nèi)存的大小,由磁盤(pán)調(diào)入內(nèi)存。
so: 每秒寫(xiě)入交換區(qū)的內(nèi)存大小,由內(nèi)存調(diào)入磁盤(pán)。
注意:內(nèi)存夠用的時(shí)候,這2個(gè)值都是0,如果這2個(gè)值長(zhǎng)期大于0時(shí),系統(tǒng)性能會(huì)受到影響,磁盤(pán)IO和CPU資源都會(huì)被消耗。有些朋友看到空閑內(nèi)存(free)很少的或接近于0時(shí),就認(rèn)為內(nèi)存不夠用了,不能光看這一點(diǎn),還要結(jié)合si和so,如果free很少,但是si和so也很少(大多時(shí)候是0),那么不用擔(dān)心,系統(tǒng)性能這時(shí)不會(huì)受到影響的。
IO(現(xiàn)在的Linux版本塊的大小為1kb)
bi: 每秒讀取的塊數(shù)
bo: 每秒寫(xiě)入的塊數(shù)
注意:隨機(jī)磁盤(pán)讀寫(xiě)的時(shí)候,這2個(gè)值越大(如超出1024k),能看到CPU在IO等待的值也會(huì)越大。
system(系統(tǒng))
in: 每秒中斷數(shù),包括時(shí)鐘中斷。
cs: 每秒上下文切換數(shù)。
注意:上面2個(gè)值越大,會(huì)看到由內(nèi)核消耗的CPU時(shí)間會(huì)越大。
CPU(以百分比表示)
us: 用戶(hù)進(jìn)程執(zhí)行時(shí)間百分比(user time)
us的值比較高時(shí),說(shuō)明用戶(hù)進(jìn)程消耗的CPU時(shí)間多,但是如果長(zhǎng)期超50%的使用,那么我們就該考慮優(yōu)化程序算法或者進(jìn)行加速。
sy: 內(nèi)核系統(tǒng)進(jìn)程執(zhí)行時(shí)間百分比(system time)
sy的值高時(shí),說(shuō)明系統(tǒng)內(nèi)核消耗的CPU資源多,這并不是良性表現(xiàn),我們應(yīng)該檢查原因。
wa: IO等待時(shí)間百分比
wa的值高時(shí),說(shuō)明IO等待比較嚴(yán)重,這可能由于磁盤(pán)大量作隨機(jī)訪問(wèn)造成,也有可能磁盤(pán)出現(xiàn)瓶頸(塊操作)。
id: 空閑時(shí)間百分比
iostat命令
iostat命令被用于監(jiān)視系統(tǒng)輸入輸出設(shè)備和CPU的使用情況。它的特點(diǎn)是匯報(bào)磁盤(pán)活動(dòng)統(tǒng)計(jì)情況,同時(shí)也會(huì)匯報(bào)出CPU使用情況。同vmstat一樣,iostat也有一個(gè)弱點(diǎn),就是它不能對(duì)某個(gè)進(jìn)程進(jìn)行深入分析,僅對(duì)系統(tǒng)的整體情況進(jìn)行分析。
格式:
iostat [option] [para]1
?項(xiàng):
-c:僅顯示CPU使用情況
-d:僅顯示設(shè)備利用率
-k:顯示狀態(tài)以千字節(jié)每秒為單位,而不使用塊每秒
-m:顯示狀態(tài)以兆字節(jié)每秒為單位
-p:僅顯示塊設(shè)備和所有被使用的其他分區(qū)的狀態(tài)
-t:顯示每個(gè)報(bào)告產(chǎn)生時(shí)的時(shí)間
-V:顯示版號(hào)并退出
-x:顯示擴(kuò)展?fàn)顟B(tài)。
參數(shù):
間隔時(shí)間:每次報(bào)告的時(shí)間間隔(秒)
次數(shù):顯示報(bào)告次數(shù)
history命令
history命令用于顯示指定數(shù)目的指令命令,讀取歷史命令文件中的目錄到歷史命令緩沖區(qū)和將歷史?令緩沖區(qū)中的目錄寫(xiě)入命令文件。
格式:
history [option] [para]1
選項(xiàng):
-c:清除當(dāng)前歷史命令
-a:將歷史命令緩沖區(qū)中命令寫(xiě)入歷史命令文件中
-r:將歷史命令文件中的命令寫(xiě)入當(dāng)前歷史命令緩沖區(qū)
-w:將當(dāng)前歷史命令緩沖區(qū)中的命令寫(xiě)入歷史文件中
參數(shù):
n:打印最近的n條歷史命令。
env命令
env命令用來(lái)顯示系統(tǒng)中已存在的環(huán)境變量,并進(jìn)行相應(yīng)的操作。
格式:
env [option] [para]1
選項(xiàng):
-i:開(kāi)始一個(gè)新的空環(huán)境
-u<變量名>:從當(dāng)前環(huán)境中刪除指定的變量
參數(shù):
變量定義:定義在新的環(huán)境中變量,定義多個(gè)變量定義用空格隔開(kāi)。格式為“變量名=值”
指定:指定要執(zhí)行的指令和參數(shù)
lsof命令
lsof(List Open Files)是一個(gè)列出當(dāng)前系統(tǒng)打開(kāi)文件的工具。在linux環(huán)境下,任何事物都以文件的形式存在,通過(guò)文件不僅僅可以訪問(wèn)常規(guī)數(shù)據(jù),還可以訪問(wèn)網(wǎng)絡(luò)連接和硬件。所以如傳輸控制協(xié)議 (TCP) 和用戶(hù)數(shù)據(jù)報(bào)協(xié)議 (UDP) 套接字等,系統(tǒng)在后臺(tái)都為該應(yīng)用程序分配了一個(gè)文件描述符,無(wú)論這個(gè)文件的本質(zhì)如何,該文件描述符為應(yīng)用程序與基礎(chǔ)操作系統(tǒng)之間的交互提供了通用接口。因?yàn)閼?yīng)用程序打開(kāi)文件的描述符列表提供了大量關(guān)于這個(gè)應(yīng)用程序本身的信息,因此通過(guò)lsof工具能夠查看這個(gè)列表對(duì)系統(tǒng)監(jiān)測(cè)以及排錯(cuò)將是很有幫助的。
格式:
lsof [option] [para]1
選項(xiàng):
-a:列出打開(kāi)文件存在的進(jìn)程
-c<進(jìn)程名>:列出指定進(jìn)程所打開(kāi)的文件
-g:列出GID號(hào)進(jìn)程詳情
d<文件號(hào)>:列出占用該文件號(hào)的進(jìn)程
+d<目錄>:列出目錄下被打開(kāi)的文件
+D<目錄>:遞歸列出目錄下被打開(kāi)的文件
-n<目錄>:列出使用NFS的文件
-i<條件>:列出符合條件的進(jìn)程。(4、6、協(xié)議、:端口、 @ip )
-p<進(jìn)程號(hào)>:列出指定進(jìn)程號(hào)所打開(kāi)的文件
-u:列出UID號(hào)進(jìn)程詳情
-h:顯示幫助信息
-v:顯示版本信息