top 命令是 Linux 下常用的性能分析工具,能夠實時顯示系統中各個進程的資源佔用狀況,類似於 Windows 的任務管理器。
top用於動態監控進程所佔系統資源,每隔3秒變一次。這個命令的特點是把佔用系統資源(CPU,內存,磁盤IO等)最高的進程放到最前面。top命令打印出了很多信息,包括系統負載(loadaverage)、進程數(Tasks)、cpu使用情況、內存使用情況以及交換分區使用情況。
命令內容詳解:
第一行: top - 04:25:26 當前系統時間 up 3 min, 系統已經運行的時間(不間歇的運行) 1 user, 當前登錄系統的用戶數 load average: 0.01, 0.03, 0.00 平均負載,三個數分別表示1分鐘、5分鐘、15分鐘的平均負載數
load average 表示時間段內活動的進程數,這些值越大就說明你的服務器壓力越大。一般情況下這個值只要不超過服務器的cpu數量就沒有關係。如果長時間超出了cpu數量那就要關注一下了。
第二行: Tasks: 任務 97 total, 共有進程數 1 running, 正在運行的進程數 96 sleeping, 休眠狀態下的進程數 0 stopped, 停止狀態的進程數 0 zombie 殭屍進程數
第三行: Cpu(s): cpu狀態 0.0%us, 用戶佔用的cpu時間百分比 0.0%sy, 系統佔用的cpu時間百分比 0.0%ni, 改變優先級的進程佔用cpu時間百分比 99.8%id, cpu處於空閒狀態的時間百分比 0.0%wa, I/O等待所佔用的cpu時間百分比 0.2%hi, 硬中斷(Hardware IRQ)佔用CPU的百分比 0.0%si, 軟中斷(Software Interrupts)佔用CPU的百分比 0.0%st 被偷走的cpu所佔百分比(一般都爲0,不用關注)
第四行: Mem: 內存狀態 1030416k total, 物理內存總量 79928k used, 被使用的內存 950488k free, 空閒的內存 10308k buffers 緩衝大小(即將寫入磁盤的)
第五行: Swap: 交換分區 2047996k total, 交換區總量 0k used, 使用的大小 2047996k free, 空閒的大小 36296k cached 緩存大小(從磁盤中讀取的)
第六行(空)
第七行: PID 進程id USER 進程所屬的用戶 PR 進程優先級 NI 進程優先值(nice值) VIRT 進程使用的虛擬內存總量,單位爲kb RES 進程使用的、未被換出的物理內存大小,單位kb SHR 共享內存 S 進程狀態 %CPU 上次更新到現在的CPU時間佔用百分比 %MEM 進程使用的物理內存百分比 TIME+ 進程使用的CPU時間總計,單位1/100秒 COMMAND 進程名稱(命令名/命令行)
其中,PR爲進程的實時優先級(跟內核有關),範圍0-99,數字越小優先級越低;
nice值的範圍爲 -20-19 ,這個值越小,那麼對應的進程優先級越高,在top裏,PR-NI=20, 默認啓動一個進程,nice是0;
S進程狀態:D=不可中斷的睡眠狀態 R=運行 S=睡眠 T=跟蹤/停止 Z=殭屍進程。
在日常的運維中關注的較多的項是 :%CPU, %MEM, COMMAND 這三個,需要多注意。
在top狀態下,按鍵盤數字“1”,可監控每個邏輯CPU的狀況:
在 top 狀態下,按 “shift + m”, 可以按照內存使用大小排序
top -bn1 它表示非動態打印系統資源使用情況,即一次性全部把所有信息輸出出來而非動態顯示,可以用在shell腳本中
top -c 最右側的命令可以顯示更詳細的信息