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