Linux提供了非常豐富的命令可以進行CPU相關數據進行監控,例如:top、vmstat等命令。top是一個動態顯示過程,即可以通過用戶按鍵來不斷刷新當前狀態。如果在前台執行該命令,它將獨占前台,直到用戶終止該程序為止,比較准確的說,top命令提供了實時的對系統處理器的狀態監視,它將顯示系統中 CPU 最“敏感”的任務列表。該命令可以按 CPU 使用,內存使用和執行時間對任務進行排序;而且該命令的很多特性都可以通過交互式命令或者在個人定制文件中進行設定。
top命令提供如下參數: top [-] [d delay] [p pid] [q] [c] [C] [S] [s] [i] [n iter] [b] 選項名 稱 說明 d delay 指定每兩次屏幕信息刷新之間的時間間隔(delay 即為具體的間隔時間數值,它的單位是秒),可以使用 s交互命令來改變之。 p pid 通過指定監控進程 ID(pid)來僅僅監控某個進程的狀態。 q 該選項將使 top 沒有任何延遲的進行刷新。如果調用程序有超級用戶權限,那麼 top 將以盡可能高的優先級運行。 c 顯示整個命令行而不只是顯示命令名。 C 顯示 CPU 總體信息而取代分別顯示每個 CPU 的信息,此參數僅對SMP 系統有效。 S 指定累計模式。 s 使 top 命令在安全模式中運行。這將去除交互命令所帶來的潛在危險。 i 使 top 不顯示任何閒置或者僵死進程。 n iter 指定 top命令迭代輸出的次數,iter為具體的迭代次數值。 b "Batch"方式運行top,在這種方式下,所有來自終端的輸入都將被忽略(當然除了ctrl+c),該參數可以結合參數“n"運行指定迭代次數退出或者該進程被殺死。這是運行top輸出到啞終端或輸到非終端的默認運行方式 示例一 在控制台輸入“top”,回車如下: top命令輸出信息包含兩部分內容: 第一部分為統計信息,包含五行數據信息;第二部分為詳細信息,顯示了各個進程的詳細信息。 有必要了解下統計信息部分的輸出信息內容的含義: 輸出信息 說明 19:47:24 當前時間 up 15 min 系統運行時間 2 users 當前登錄用戶數,這裡是jzhou和root load average:0.02 , 0.14 , 0.21 系統負載,即任務隊列的平均長度。三個數值分別為1分鐘、5分鐘、15分鐘前到現在的平均值,即0.02,0.14,0.21 Tasks:122 total, 1 running,120 sleeping,0 stopped,1 zombie 122個進程(任務),其中有2個處於運行狀態,120個處於睡眠狀態,沒有停止的進程,有1個僵屍進程 Cpus:0.7%us,0.7%sy,0.0%ni,97.6%id,0.0%wa,0.7%hi,0.3%si,0.0%st Cpu運行狀態,用戶進程(user)占用CPU的0.7%,系統進程(system)占用CPU的0.7%,用戶進程沒有改變過優先級的進程,所以user nice值為0.0%,97.6%的CPU處於空閒狀態(idle),沒有等待的輸入輸出,所以iowait的值也為0.0%,硬件請求終端時間(hardware interrupt)占CPU的0.7%,軟終端請求時間占CPU的0.3%,st代表steal time,具體作用不是很清楚,網上說是為其它CPU預留的,不清楚 Mem:1035244k total,537528k used,497716k free,25816k buffers 內存總量為1035244k,已使用的內存總量為537528k,497716k為空閒內存總量,25816k用作內核緩存的內存總量。(這是虛擬機的情況,物理機好像還有其它參數) Swap:0k total,0k used,0k free,351392k cached 交換分區總量為0k,使用的交換分區總量為0k,空閒交換分區總量為0k,351392k為緩沖的交換區總量(cached)、內存中的內容被患處到交換區,而後又被換入到內存,但使用過的交換區尚未被覆蓋,該數值即為這些內容已存在於內存中的交換區的大小。相應的內存再次被換出時可不必再對交換區寫入。 然後看看詳細信息部分輸出的信息的內容: 輸出信息 說明 PID 進程標識符 USER 進程所有者用戶名 PR/PRI 進程執行的優先級 NI NICE值,負值表示高優先級,正值表示低優先級 VIRT 進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES RES 進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA SHR 共享內存大小,單位kb S/STAT 進程狀態