linux top 命令詳解

極客on之路發表於2019-04-16

top命令算是最直觀、好用的檢視伺服器負載的命令了。它實時動態重新整理顯示伺服器狀態資訊,且可以通過互動式命令自定義顯示內容,非常強大。

在終端中輸入top,回車後會顯示如下內容:

top - 21:48:39 up  8:57,  2 users,  load average: 0.36, 0.24, 0.14
Tasks: 322 total,   2 running, 320 sleeping,   0 stopped,   0 zombie
%Cpu(s):  5.0 us,  1.7 sy,  0.0 ni, 93.0 id,  0.0 wa,  0.3 hi,  0.0 si,  0.0 st
KiB Mem:   1010504 total,   937416 used,    73088 free,    23708 buffers
KiB Swap:  1046524 total,   280708 used,   765816 free.   365556 cached Mem

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND      
 8096 root      20   0  320624  38508  21192 S  1.7  3.8   0:41.03 Xorg         
13536 tabalt    20   0  697336 104272  56776 S  1.7 10.3   0:08.29 gnome-langu+ 
 9426 tabalt    20   0 1213228  72976  16860 S  1.0  7.2   2:07.27 compiz       
  197 root      20   0       0      0      0 S  0.3  0.0   0:36.13 kworker/0:2  
 1009 root      20   0  303112   3392   1500 S  0.3  0.3   0:00.93 polkitd      
 9670 tabalt    20   0  325932   4300   2256 S  0.3  0.4   0:40.27 vmtoolsd     
14016 root      25   5   43940   2408   2000 S  0.3  0.2   0:01.12 http         
14149 tabalt    20   0  591180  19504  12820 S  0.3  1.9   0:00.45 gnome-termi+ 
    1 root      20   0   33648   1972    744 S  0.0  0.2   0:01.79 init         
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd     
    3 root      20   0       0      0      0 S  0.0  0.0   0:02.80 ksoftirqd/0  
    4 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0  
    5 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H 
    7 root      20   0       0      0      0 S  0.0  0.0   0:05.55 rcu_sched    
    8 root      20   0       0      0      0 R  0.0  0.0   0:03.43 rcuos/0      
    9 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcuos/1      
   10 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcuos/2 

一、系統資訊統計

前五行是系統整體狀態的統計資訊展示區域。下面分別介紹每一行中的內容:

1、第一行顯示伺服器概況

如下所示,第一行列出了伺服器執行了多長時間,當前有多少個使用者登入,伺服器的負荷情況等,使用uptime命令能獲得同樣的結果。

top - 21:48:39 up  8:57,  2 users,  load average: 0.36, 0.24, 0.14
       /         /        /                \
   當前時間  執行時長   當前登入使用者數  平均負載(1分鐘、5分鐘、15分鐘)

平均負載的值越小代表系統壓力越小,越大則代表系統壓力越大。通常,我們會以最後一個數值,也就是15分鐘內的平均負載作為參考來評估系統的負載情況。

對於只有單核cpu的系統,1.0是該系統所能承受負荷的邊界值,大於1.0則有處理需要等待。

一個單核cpu的系統,平均負載的合適值是0.7以下。如果負載長期徘徊在1.0,則需要考慮馬上處理了。超過1.0的負載,可能會帶來非常嚴重的後果。

當然,多核cpu的系統是在前述值的基礎上乘以cpu核心的個數。如對於多核cpu的系統,有N個核則所能承受的邊界值為N.0

可以使用如下命令來檢視每個處理器的資訊:

cat /proc/cpuinfo

如果只想計算有多少個cpu核心,可以使用如下命令:

cat /proc/cpuinfo | grep 'model name' | wc -l

2、第二行是程式資訊:

Tasks: 322 total,   2 running, 320 sleeping,   0 stopped,   0 zombie
        /                /            /             /            /
    程式總數      正執行程式數    睡眠程式數   停止程式數    殭屍程式數

3、第三行是CPU資訊:

%Cpu(s):  
5.0 us      使用者空間CPU佔比
1.7 sy      核心空間CPU佔比
0.0 ni      使用者程式空間改過優先順序的程式CPU佔比
93.0 id     空閒CPU佔比
0.0 wa      待輸入輸出CPU佔比
0.3 hi      硬中斷(Hardware IRQ)CPU佔比
0.0 si      軟中斷(Software Interrupts)CPU佔比
0.0 st      - 

4、第四行是記憶體資訊:

KiB Mem:   1010504 total,   937416 used,    73088 free,    23708 buffers
                /                /                /                /
            實體記憶體總量      使用中總量        空閒總量        快取的記憶體量

5、第五行是swap交換分割槽資訊:

KiB Swap:  1046524 total,   280708 used,   765816 free,   365556 cached Mem
                /                /                /                /
            交換區總量      使用中總量        空閒總量        快取的記憶體量

二、程式(任務)狀態監控

第七行及以下顯示了各程式(任務)的狀態監控。各列所代表的含義如下:

PID         程式id
USER        程式所有者
PR          程式優先順序
NI          nice值。負值表示高優先順序,正值表示低優先順序
VIRT        程式使用的虛擬記憶體總量,單位kb。VIRT=SWAP+RES
RES         程式使用的、未被換出的實體記憶體大小,單位kb。RES=CODE+DATA
SHR         共享記憶體大小,單位kb
S           程式狀態。D=不可中斷的睡眠狀態 R=執行 S=睡眠 T=跟蹤/停止 Z=殭屍程式
%CPU        上次更新到現在的CPU時間佔用百分比
%MEM        程式使用的實體記憶體百分比
TIME+       程式使用的CPU時間總計,單位1/100秒
COMMAND     程式名稱(命令名/命令列)

三、與top互動

  • 按鍵b開啟或關閉 執行中程式的高亮效果

  • 按鍵x開啟或關閉 排序列的高亮效果

  • shift + > 或 shift + < 可以向右或左改變排序列

  • f鍵,可以進入編輯要顯示欄位的檢視,有 號的欄位會顯示,無 號不顯示,可根據頁面提示選擇或取消欄位