(Linux)- top 介紹與命令詳細解說
(Linux)- top 介紹與命令詳細解說
Linux 中常用 top 命令來查看系統當前的負載及 load 等情況,將對其中具體的欄位及含義做個介紹。
$ top
一、top 命令顯示信息介紹
view plaincopyprint?
01. top – 16:44:36 up 113 days, 36 min, 1 user, load average: 0.10, 0.04, 0.00
02. Tasks: 111 total, 2 running, 108 sleeping, 1 stopped, 0 zombie
03. Cpu(s): 0.0%us, 0.0%sy, 0.0%ni, 99.9%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
04. Mem: 5242880k total, 4403900k used, 838980k free, 285712k buffers
05. Swap: 2097144k total, 112k used, 2097032k free, 3127936k cached
06.
07. PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
08. 1 root 15 0 10348 640 544 S 0.0 0.0 0:00.13 init
09. 2 root RT -5 0 0 0 S 0.0 0.0 0:01.82 migration/0
10. 3 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0
11. 4 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
二、運行 top 命令后,會顯示如下的內容,具體各內容的含義如下:
top – 16:44:36 up 113 days, 36 min, 1 user, load average: 0.10, 0.04, 0.00
Tasks: 111 total, 2 running, 108 sleeping, 1 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni, 99.9%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 5242880K total, 4403900K used, 838980K free, 285712K buffers
Swap: 2097144K total, 112K used, 2097032K free, 3127936K cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 15 0 10348 640 544 S 0.0 0.0 0:00.13 init
2 root RT -5 0 0 0 S 0.0 0.0 0:01.82 migration/0
3 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0
4 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
【第一行】:
16:44:36 —-表示當前系統的時間;
up 113 days, 36 min —-表示該機器已經啟動了多長時間;
1 user —-當前連接到該機器的有一個用戶;
load average: 0.10, 0.04, 0.00 —-分別對應 1、5、15 分鐘內 CPU 的平均負載;
PS:load average 數據是每隔 5 秒鐘檢查一次活躍的進程數,然後按特定算法計算出的數值。如果這個數除以邏輯 CPU 的數量,結果高於 5 的時候就表明系統在超負荷運轉了。
關於該參數的詳細說明:該叄數是平常監控機器的運行狀況的一個主要指標,我們知道每個 CPU 都會維護一個”運行隊列”,這裡存放待執行的進程,只要不是在等待 IO 或者主動的 wait 就是可運行的進程,就會出現在這個隊列里,如果這樣的進程越來越多,CPU 就需要花很長的時間來處理這些進程。這樣 CPU 的負載其實就是指正在執行的進程以及處於運行隊列中的進程的總和,平均負載就是在某段時間負載的平均值。
【第二行】—-進程的運行情況
各個參數的具體含義分別是:總進程數,正在執行的進程數,休眠的進程數,停止運行的進程數,殭屍進程數。
Tasks: 111 total —-進程總數;
2 running —- 正在運行的進程數;
108 sleeping —- 睡眠的進程數;
1 stopped —- 停止的進程數;
0 zombie —- 殭屍進程數;
【第三行】—- CPU 的利用率
Cpu(s): 0.0%us —- 用戶空間佔用 CPU 百分比;
0.0%sy —- 內核空間佔用 CPU 百分比;
0.0%ni —- 用戶進程空間內改變過優先順序的進程佔用 CPU 百分比;
99.9%id —- 空閑 CPU 百分比;
0.0%wa —- 等待輸入輸出的 CPU 時間百分比;
0.0%hi, 0.0%si, 0.0%st —- 不常用,不做介紹;
【第四行】—-物理內存的使用情況
Mem: 5242880k total —- 物理內存的總量;
4403900k used —- 已經使用的物理內存的總理;
838980k free —- 空閑內存總量;
285712k buffers —- 用作內核緩存的內存量
【第五行】 — 交換區的使用情況
Swap: 2097144k total — 交換區的總量;
112 k used — 已經使用的交換區的量;
2097032 k free — 空閒交換區的量;
3127936 k cached — 緩衝的交換區總量。
內存中的內容被換出到交換區,而後又被換入到內存,但使用過的交換區尚未被覆蓋,該數據即為這些內容已經存在於內存中的交換區的大小。相應的內存再次被換出時不必再對交換區寫入。
PS:這裡要說明的是不能用 Windows 的內存概念理解這些數據,如果按 Windows 的方式此台伺服器「很危險」:8 G 的內存總量只剩下530 M 的可用內存。Linux 的內存管理有其特殊性,複雜點需要一本書來說明,這裡只是簡單說點和我們傳統概念(windows)的不同。
第四行中使用中的內存總量(used)指的是現在系統內核控制的內存數,空閒內存總量(free)是內核還未納入其管控範圍的數量。納入內核管理的內存不見得都在使用中,還包括過去使用過的現在可以被重複利用的內存,內核並不把這些可被重新使用的內存交還到 free 中去,因此在 Linux上 free 內存會越來越少,但不用為此擔心。
如果出於習慣去計算可用內存數,這裡有個近似的計算公式:第四行的 free + 第四行的 buffers + 第五行的cached,按這個公式此台伺服器的可用內存:838980 + 285717 + 3127936 = 4.2 GB。
對於內存監控,在 top 里我們要時刻監控第五行 swap 交換分區的 used,如果這個數值在不斷的變化,說明內核在不斷進行內存和 swap 的數據交換,這是真正的內存不夠用了。
【第六行】 —- 空格
【第七行】 —- 進程信息區
進行信息區的信息詳細的描述了各個進程目前的運行狀況:
序號 列名 含義
a PID — 進程id
b PPID — 父進程 id
c RUSER — Real user name
d UID — 進程所有者的用戶 id
e USER — 進程所有者的用戶名
f GROUP — 進程所有者的組名
g TTY — 啟動進程的終端名。不是從終端啟動的進程則顯示為 ?
h PR — 優先順序
i NI — nice值。負值表示高優先順序,正值表示低優先順序
j P — 最後使用的 CPU,僅在多 CPU 環境下有意義
k %CPU — 上次更新到現在的 CPU 時間佔用百分比
l TIME — 進程使用的 CPU 時間總計,單位秒
m TIME+ — 進程使用的 CPU 時間總計,單位 1/100 秒
n %MEM — 進程使用的物理內存百分比
o VIRT — 進程使用的虛擬內存總量,單位 kb。VIRT = SWAP + RES
p SWAP — 進程使用的虛擬內存中,被換出的大小,單位 kb。
q RES — 進程使用的、未被換出的物理內存大小,單位 kb。RES = CODE + DATA
r CODE —可執行代碼佔用的物理內存大小,單位 kb
s DATA —可執行代碼以外的部分 ( 數據段 + 棧 ) 佔用的物理內存大小,單位 kb
t SHR —共享內存大小,單位 kb
u nFLT —頁面錯誤次數
v nDRT —最後一次寫入到現在,被修改過的頁面數。
w S —進程狀態。
D = 不可中斷的睡眠狀態
R = 運行
S = 睡眠
T = 跟蹤/停止
Z = 殭屍進程
x COMMAND — 命令名/命令行
y WCHAN — 若該進程在睡眠,則顯示睡眠中的系統函數名
z Flags — 任務標誌
默認情況下僅顯示的信息包括:PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 。可以通過如下的快捷方式來更改顯示的內容:
•通過【f】鍵可選擇顯示的內容,按 f 後會顯示列的列表,按 a-z 即可顯示或隱藏對應的列,按回車確定。
•通過【o】鍵可改變列的顯示順序。按小寫的 a-z 可以將相應的列向右移動,按大寫的 A-Z 可以將相應的列向左移動,按回車確定。
•按【F】或【O】,按 a-z 可將進程按相應的列進行排序,按【R】可將當前的排序倒轉。
三、命令的使用方法
top [-]
•d — 指定每兩次屏幕信息刷新之間的時間間隔。當然用戶可以使用 s 交互命令來改變。
•p — 通過指定監控進程 ID 來僅僅監控某個進程的狀態;
•s — 使 top 命令在安全模式下運行,這將免出人意料交互命令所帶來的潛在風險;
•S —指定累積模式;
•i — 使 top 不顯示任何閒置或僵死的進程;
•c — 顯示整個命令行而不僅僅是顯示命令名。
四、top 的一些交互命令
•h 或者 ? — 顯示幫助畫面,給出一些簡短的命令總結說明。
•k — 終止一個進程,系統提示輸入一個 PID 及需要發送給該進程的信號。一般終止進程用 15 信號,如果不能正常結束就使用 9 信號。 在安全模式下該命令被屏蔽。
•i — 忽略閒置和僵死的進程,這是一個開關式命令;
•q — 退出程序;
•r — 重新安排一個進程的優先順序別。系統提示用戶輸入需要改變的進程 PID 及需要設置的進程優先順序的值。輸入一個正值使優先順序降低,反之則使進程擁有高優先順序,默認是 10;
•S — 切換到累積模式;
•s — 改變兩次刷新之間的延遲時間,系統提示用戶輸入新的時間,單位為 s。輸入 0 則系統不斷刷新,默認值是 5。
•n — 顯示的進程數,系統會提示輸入需要顯示的進程數目;
•f 或 F — 從當前顯示項目中添加或刪除項目;
•o 或 O — 改變當前顯示項目的順序;
•l — 切換顯示平均負載和啟動時間的信息;
•m — 切換顯示內存信息;
•t — 切換顯示進程和 CPU 狀態信息;
•c — 切換命令名稱和完整命令行;
•M — 根據駐留內存大小進行排序;
•P — 根據 CPU 使用百分比大小進行排序;
•T — 根據時間/累積時間進行排序。
免責聲明:
1.本影像檔案皆從網上搜集轉載,不承擔任何技術及版權問題。
2.如有下載連結僅供寬頻測試研究用途,請下載後在24小時內刪除,請勿用於商業。
3.若侵犯了您的合法權益,請來信通知我們,我們會及時刪除,給您帶來的不便,深表歉意。