Linux命令之top命令詳解

一、數據詳解

首先說一下,這裏將top命令展示的數據分爲兩部分來說,一部分是系統統計數據,另一部分是進程相關數據

在這裏插入圖片描述

1.1 系統統計數據

1.1.1 第一行

top - 23:02:41 up 20 days,  4:52,  1 user,  load average: 0.00, 0.04, 0.05
  • 23:02:41:表示當前時間
  • up 20 days, 4:52:表示系統運行時間,這裏就是20天4小時52分鐘(在這個期間沒有重啓過)
  • 1 user:當前系統登錄用戶數
  • load average: 0.00, 0.04, 0.05:表示系統過去1、5、15分鐘內的平均負載。load average就是load的平均值,而load就是正在運行和準備運行的進程總數,這裏就表示一段時間內進程的數量。

在這一行中,我們特別關注的數據是load average。從網上看到兩種說法。
(1)一種爲load average / 邏輯cpu核數>5時,系統就超負荷,常用來判斷cpu性能優劣。

## 邏輯cpu個數
[root@YFF ~]# cat /proc/cpuinfo | grep 'processor' | wc -l 
1

(2)另一種爲load average顯示的負載均值,只能作爲判斷系統過去某個時間段的狀態的參照,與cpu的性能關係不大。實際需要使用vmstat命令顯示的run值和blocked值,當出現明顯較多的blocked的時候,就說明cpu產生了瓶頸

參考鏈接:
CPU核數和load average的關係
關於CPU的運行隊列與系統負載

1.1.2 第二行

Tasks:  87 total,   1 running,  86 sleeping,   0 stopped,   0 zombie

第二行爲進程的數據。這裏表示總共87個進程、1個正在運行、86個正在休眠、0個停止、0個處於殭屍狀態的。

關於進程狀態,根據查閱資料來看,有三態模型五態模型兩種分類方式。(1)三態模型:分爲就緒、運行、阻塞三種狀態。(2)五態模型:運行、可中斷、不可中斷、停止、被跟蹤
在這裏插入圖片描述

參考鏈接:
進程的描述與控制 進程的狀態和轉換 三態模型和五態模型
操作系統:進程的三種狀態
Linux中進程狀態

1.1.3 第三行

%Cpu(s):  0.7 us,  0.3 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
  • us:cpu運行(未調整優先級的)用戶進程時間佔比。常見的用戶進程爲Shells、數據庫、web服務器....
  • sy:cpu運行內核進程時間佔比。常見的內核進程爲分配內存、IO操作、創建子進程...
  • ni:cpu運行(已調整優先級的)用戶進程時間佔比。
  • id:cpu處於空閒狀態時間比例。
  • wa:CPU用於等待IO完成的CPU時間佔比(當CPU發起讀寫操作時,需要等待磁盤驅動器將數據讀入內存,從而導致CPU在等待的這一段時間無事可做)。
  • hi:處理硬件中斷的CPU時間佔比。
  • si:處理軟件中斷的CPU時間佔比。
  • st:steal time,當數值一直特別大的時候,就可能是虛擬機被超賣了。

這一行的數據爲cpu使用時間百分比。其中us、sy、wa、si是需要重點關注的數據。一般來說us>70%就高了,sy>30%就高了,wa>5%就高了

1.1.4 第四行

KiB Mem :  1881952 total,   121120 free,   708564 used,  1052268 buff/cache
  • total:物理內存總量
  • free:空閒內存總量(內核還未納入其管控範圍的數量)
  • used:使用中內存總量(系統內核控制的內存數)
  • buff/cache:緩衝(存)區內存量

納入內核管理的內存不見得都在使用中,還包括過去使用過的現在可以被重複利用的內存,內核並不把這些可被重新使用的內存交還到free中去,因此在linux上free內存會越來越少,但不用爲此擔心。

  • buffer:緩衝區 用於寫磁盤 將數據寫到buffer緩衝區中,最後一次性寫入
  • cache:緩存區 用於讀磁盤 將讀到的數據放到cache緩存區,後面再從緩存區中讀

參考鏈接:
Linux中Buffer和Cache的區別
linux 操作系統中buffer 和 cache 的作用

1.1.5 第五行

KiB Swap:        0 total,        0 free,        0 used.  1009180 avail Mem
  • total:交換區總量
  • free:空閒交換區總量
  • used:使用的交換區總量
  • avail Mem:可用交換區總量

對於內存監控,在top裏我們要時刻監控第五行swap交換分區的used,如果這個數值在不斷的變化,說明內核在不斷進行內存和swap的數據交換,這是真正的內存不夠用了

在性能監控分析中,對操作系統的物理內存的使用並不關注,在大部分場景下物理內存並沒有成爲我們的瓶頸點,但這並不是說在內存上就沒有調優的空間了。

1.2 進程相關數據

在這裏插入圖片描述

  • 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時間,精確到百分之一秒。
  • COMMOND:運行進程所使用的命令。進程名稱(命令名/命令行)

二、使用詳解

參考鏈接:Linux命令大全——top命令

2.1 top命令參數選項

2.1.1 查看指定進程—— - p 進程號

top -p 進程號 :可以將進程數據中只顯示指定進程號的數據

在這裏插入圖片描述

2.1.2 設置屏幕刷新時間—— - d 秒數

top -d 秒數 :默認情況下,top顯示的數據1s刷新一次,通過-d參數可以設置刷新時間間隔

2.1.3 輸出到文件—— -b>文件路徑

[root@YFF home]# top -n 3 -b>/home/b.txt

在這裏插入圖片描述

2.1.4 其他相關命令參數

-b:以批處理模式操作;
-c:顯示完整的治命令;
-d:屏幕刷新間隔時間;
-I:忽略失效過程;
-s:保密模式;
-S:累積模式;
-i<時間>:設置間隔時間;
-u<用戶名>:指定用戶名;
-p<進程號>:指定進程;
-n<次數>:循環顯示的次數。

2.2 交互命令

2.2.1 顯示進程絕對路徑——c

top命令執行後,按下c鍵即可。會顯示命令的名稱及完整命令行
在這裏插入圖片描述

2.2.2 根據CPU使用率排序——P

top命令執行後,按下P鍵即可。
在這裏插入圖片描述

2.2.3 根據物理內存使用率排序——M

top命令執行後,按下M鍵即可。
在這裏插入圖片描述

2.2.4 顯示每個核的CPU狀況——1

top命令執行後,按下1鍵即可。
在這裏插入圖片描述
在這裏插入圖片描述

2.2.5 其他相關交互命令

h:顯示幫助畫面,給出一些簡短的命令總結說明;
k:終止一個進程;
i:忽略閒置和僵死進程,這是一個開關式命令;
q:退出程序;
r:重新安排一個進程的優先級別;
S:切換到累計模式;
s:改變兩次刷新之間的延遲時間(單位爲s),如果有小數,就換算成ms。輸入0值則系統將不斷刷新,默認值是5s;
f或者F:從當前顯示中添加或者刪除項目;
o或者O:改變顯示項目的順序;
l:切換顯示平均負載和啓動時間信息;
m:切換顯示內存信息;
t:切換顯示進程和CPU狀態信息;
c:切換顯示命令名稱和完整命令行;
M:根據駐留內存大小進行排序;
P:根據CPU使用百分比大小進行排序;
T:根據時間/累計時間進行排序;
w:將當前設置寫入~/.toprc文件中。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章