Linux监控命令之 top
top 簡介
top命令是Linux下常用的性能分析工具,能夠實時顯示系統中各個進程的資源占用狀況,類似于Windows的任務管理器。top是一個動態顯示過程,即可以通過用戶按鍵來不斷刷新當前狀態.如果在前臺執行該命令,它將獨占前臺,直到用戶終止該程序為止.
top命令提供了實時的對系統處理器的狀態監視.它將顯示系統中CPU最“敏感”的任務列表.該命令可以按CPU使用.內存使用和執行時間對任務進行排序;而且該命令的很多特性都可以通過交互式命令或者在個人定制文件中進行設定。
top 命令解析
-
第一行,Top 任務隊列信息(系統運行狀態及平均負載),與uptime命令結果相同
- 17:35:48?: 系統當前時間
- 312 days, 12:52?: 系統開機到現在經過了多少時間
- 1 users : 當前1用戶在線
- load average: 0.02, 0.04, 0.00: 系統1分鐘、5分鐘、15分鐘的CPU負載信息
- 單核CPU情況下,0.00 表示沒有任何負荷,1.00表示剛好滿負荷,超過1側表示超負荷,理想值是0.7
-
第二行,Tasks 進程相關信息
- 312 total:很好理解,就是當前有312個任務,也就是312個進程。
- 1 running:1個進程正在運行
- 311 sleeping:311個進程睡眠
- 0 stopped:停止的進程數
- 0 zombie:僵死的進程數
-
第三行,Cpu(s):表示這一行顯示CPU總體信息
- 0.8%us:用戶態進程占用CPU時間百分比,不包含renice值為負的任務占用的CPU的時間。
- 1.7%sy:內核占用CPU時間百分比
- 0.0%ni:改變過優先級的進程占用CPU的百分比
- 97.4%id:空閑CPU時間百分比
- 0.0%wa:等待I/O的CPU時間百分比
- 0.0%hi:CPU硬中斷時間百分比
- 0.0%si:CPU軟中斷時間百分比
- 0.0%st: Steal time 虛擬機被hypervisor偷去的CPU時間(如果當前處于一個hypervisor下的vm,實際上hypervisor也是要消耗一部分CPU處理時間的)
- 注:這里顯示數據是所有cpu的平均值,如果想看每一個cpu的處理情況,按1即可;折疊,再次按1;
-
第四行,Men:內存的意思
- 32863144kk total:物理內存總量
- 30462220k used:使用的物理內存量
- 2100924k free:空閑的物理內存量
- 552864k buffers:用作內核緩存的物理內存量
-
第五行,Swap:交換空間
- 35094520k total:交換區總量
- 154016k used:使用的交換區量
- 34940804k free:空閑的交換區量
- 28041344k cached:緩沖交換區總量
-
進程信息
- PID:進程的ID
- USER:進程所有者
- PR:進程的優先級別,越小越優先被執行
- NInice:值
- VIRT:進程占用的虛擬內存
- RES:進程占用的物理內存
- SHR:進程使用的共享內存
- S:進程的狀態。S表示休眠,R表示正在運行,Z表示僵死狀態,N表示該進程優先值為負數
- %CPU:進程占用CPU的使用率
- %MEM:進程使用的物理內存和總內存的百分比
- TIME+:該進程啟動后占用的總的CPU時間,即占用CPU使用時間的累加值。
- COMMAND:進程啟動命令名稱
top命令交互操作指令
在top命令中按f按可以查看顯示的列信息,按對應字母來開啟/關閉列,大寫字母表示開啟,小寫字母表示關閉。帶*號的是默認列。
A: PID = (Process Id) 進程Id; E: USER = (User Name) 進程所有者的用戶名; H: PR = (Priority) 優先級 I: NI = (Nice value) nice值。負值表示高優先級,正值表示低優先級 O: VIRT = (Virtual Image (kb)) 進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES Q: RES = (Resident size (kb)) 進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA T: SHR = (Shared Mem size (kb)) 共享內存大小,單位kb W: S = (Process Status) 進程狀態。D=不可中斷的睡眠狀態,R=運行,S=睡眠,T=跟蹤/停止,Z=僵尸進程 K: %CPU = (CPU usage) 上次更新到現在的CPU時間占用百分比 N: %MEM = (Memory usage (RES)) 進程使用的物理內存百分比 M: TIME+ = (CPU Time, hundredths) 進程使用的CPU時間總計,單位1/100秒? b: PPID = (Parent Process Pid) 父進程Id? c: RUSER = (Real user name)? d: UID = (User Id) 進程所有者的用戶id? f: GROUP = (Group Name) 進程所有者的組名? g: TTY = (Controlling Tty) 啟動進程的終端名。不是從終端啟動的進程則顯示為 ?? j: P = (Last used cpu (SMP)) 最后使用的CPU,僅在多CPU環境下有意義? p: SWAP = (Swapped size (kb)) 進程使用的虛擬內存中,被換出的大小,單位kb? l: TIME = (CPU Time) 進程使用的CPU時間總計,單位秒? r: CODE = (Code size (kb)) 可執行代碼占用的物理內存大小,單位kb? s: DATA = (Data+Stack size (kb)) 可執行代碼以外的部分(數據段+棧)占用的物理內存大小,單位kb? u: nFLT = (Page Fault count) 頁面錯誤次數? v: nDRT = (Dirty Pages count) 最后一次寫入到現在,被修改過的頁面數? y: WCHAN = (Sleeping in Function) 若該進程在睡眠,則顯示睡眠中的系統函數名? z: Flags = (Task Flags <sched.h>) 任務標志,參考 sched.h X: COMMAND = (Command name/line) 命令名/命令行注:使用頻率最高的是P、T、M,因為通常使用top,我們就想看看是哪些進程最耗cpu資源、占用的內存最多;?
注:通過”shift + >”或”shift + <”可以向右或左改變排序列?
如果只需要查看內存:可用free命令。只查看uptime信息(第一行),可用uptime命令;
top命令格式
top [-] [d] [p] [q] [c] [C] [S]????[n] 參數說明: d:??指定每兩次屏幕信息刷新之間的時間間隔。當然用戶可以使用s交互命令來改變之。 p:??通過指定監控進程ID來僅僅監控某個進程的狀態。 q: 該選項將使top沒有任何延遲的進行刷新。如果調用程序有超級用戶權限,那么top將以盡可能高的優先級運行。 S: ?指定累計模式 s:? 使top命令在安全模式中運行。這將去除交互命令所帶來的潛在危險。 i:??使top不顯示任何閑置或者僵死進程。 c:??顯示整個命令行而不只是顯示命令名top命令交互
更強大的工具 htop?
htop 是一個 Linux 下的交互式的進程瀏覽器,可以用來替換Linux下的top命令。
與Linux傳統的top相比,htop更加人性化。它可讓用戶交互式操作,支持顏色主題,可橫向或縱向滾動瀏覽進程列表,并支持鼠標操作。
與top相比,htop有以下優點:
- 可以橫向或縱向滾動瀏覽進程列表,以便看到所有的進程和完整的命令行。
- 在啟動上,比top 更快。
- 殺進程時不需要輸入進程號。
- htop 支持鼠標操作。
總結
以上是生活随笔為你收集整理的Linux监控命令之 top的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: word排版入门
- 下一篇: Linux 修改系统编码