參考:https://www.cnblogs.com/zhoug2020/p/6336453.html
輸入top命令(會實時變動)
1.1 系統運行時間和平均負載:

- 當前時間
- 系統已運行的時間
- 當前登錄用戶的數量
- 相應最近5、10和15分鍾內的平均負載。
可以使用'l'命令切換uptime的顯示。
21:45:11 — 當前系統時間
0 days, 4:54 — 系統已經運行了4小時54分鍾(在這期間沒有重啟過)
2 users — 當前有2個用戶登錄系統
load average:0.24, 0.15, 0.19 — load average后面的三個數分別是5分鍾、10分鍾、15分鍾的負載情況。
load average數據是每隔5秒鍾檢查一次活躍的進程數,然后按特定算法計算出的數值。如果這個數除以邏輯CPU的數量,結果高於5的時候就表明系統在超負荷運轉了。
1.2 任務:

1.3 CPU 狀態:

- us, user: 運行(未調整優先級的) 用戶進程的的百分比
- sy,system: 運行內核進程的CPU百分比
- ni,niced:運行已調整優先級的用戶進程的CPU百分比
- id:空閑cpu的百分比
- wa,IO wait: 用於等待IO完成的CPU百分比
- hi:硬中斷(Hardware IRQ)占用CPU的百分比
- si: 軟中斷(Software Interrupts)占用CPU的百分比
- st:這個虛擬機被hypervisor偷去的CPU時間(譯注:如果當前處於一個hypervisor下的vm,實際上hypervisor也是要消耗一部分CPU處理時間的)。

1.4 內存使用:

接下來兩行顯示內存使用率,有點像'free'命令。第一行是物理內存使用,第二行是虛擬內存使用(交換空間)。
物理內存顯示如下:全部可用內存、已使用內存、空閑內存、緩沖內存。相似地:交換部分顯示的是:全部、已使用、空閑和緩沖交換空間。
內存顯示可以用'm'命令切換。
eg.
509248k total — 物理內存總量(509M)
495964k used — 使用中的內存總量(495M)
13284k free — 空閑內存總量(13M)
25364k buffers — 緩存的內存量 (25M)
swap交換分區
492536k total — 交換區總量(492M)
11856k used — 使用的交換區總量(11M)
480680k free — 空閑交換區總量(480M)
202224k cached — 緩沖的交換區總量(202M)
這里要說明的是不能用windows的內存概念理解這些數據,如果按windows的方式此台服務器“危矣”:8G的內存總量只剩下530M的可用內存。Linux的內存管理有其特殊性,復雜點需要一本書來說明,這里只是簡單說點和我們傳統概念(windows)的不同。
第四行中使用中的內存總量(used)指的是現在系統內核控制的內存數,空閑內存總量(free)是內核還未納入其管控范圍的數量。納入內核管理的內存不見得都在使用中,還包括過去使用過的現在可以被重復利用的內存,內核並不把這些可被重新使用的內存交還到free中去,因此在linux上free內存會越來越少,但不用為此擔心。
如果出於習慣去計算可用內存數,這里有個近似的計算公式:第四行的free + 第四行的buffers + 第五行的cached,按這個公式此台服務器的可用內存:
13284+25364+202224 = 240M。
對於內存監控,在top里我們要時刻監控第五行swap交換分區的used,如果這個數值在不斷的變化,說明內核在不斷進行內存和swap的數據交換,這是真正的內存不夠用了。
1.5 各進程(任務)的狀態監控:
PID:進程ID,進程的唯一標識符
USER:進程所有者的實際用戶名。
PR:進程的調度優先級。這個字段的一些值是'rt'。這意味這這些進程運行在實時態。
NI:進程的nice值(優先級)。越小的值意味着越高的優先級。負值表示高優先級,正值表示低優先級
VIRT:進程使用的虛擬內存。進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES
RES:駐留內存大小。駐留內存是任務使用的非交換物理內存大小。進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA
SHR:SHR是進程使用的共享內存。共享內存大小,單位kb
S:這個是進程的狀態。它有以下不同的值:
- D - 不可中斷的睡眠態。
- R – 運行態
- S – 睡眠態
- T – 被跟蹤或已停止
- Z – 僵屍態
%CPU:自從上一次更新時到現在任務所使用的CPU時間百分比。
%MEM:進程使用的可用物理內存百分比。
TIME+:任務啟動后到現在所使用的全部CPU時間,精確到百分之一秒。
COMMAND:運行進程所使用的命令。進程名稱(命令名/命令行)
還有許多在默認情況下不會顯示的輸出,它們可以顯示進程的頁錯誤、有效組和組ID和其他更多的信息。