<div class="markdown_views">
<p>一.信息顯示 <br>
Linux系統可以通過top命令查看系統的CPU、內存、運行時間、交換分區、執行的線程等信息。通過top命令可以有效的發現系統的缺陷出在哪裏。是內存不夠、CPU處理能力不夠、IO讀寫過高….
[root@foundation6 docker]# top
top - 21:31:26 up 15:16, 5 users, load average: 0.61, 0.82, 0.75
Tasks: 240 total, 2 running, 238 sleeping, 0 stopped, 0 zombie
%Cpu(s): 13.7 us, 1.5 sy, 0.0 ni, 84.2 id, 0.6 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 3775264 total, 250100 free, 2495300 used, 1029864 buff/cache
KiB Swap: 4064252 total, 2789544 free, 1274708 used. 527664 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
16507 kiosk 20 0 1935284 201988 10816 R 46.8 5.4 68:11.92 plugin-con+
15773 kiosk 20 0 1784208 497692 40776 S 4.7 13.2 37:05.32 firefox
408 root 20 0 36940 4116 3920 S 3.0 0.1 4:51.67 systemd-jo+
3789 kiosk 20 0 747664 14124 4696 S 2.0 0.4 2:49.76 gnome-term+
2404 root 20 0 439488 106688 84580 S 1.7 2.8 16:08.35 Xorg
2662 kiosk 9 -11 700096 5232 3032 S 1.7 0.1 5:17.25 pulseaudio
21632 kiosk 20 0 812940 167440 30100 S 1.7 4.4 20:15.48 wps
2688 kiosk 20 0 2111764 218776 18580 S 1.3 5.8 20:25.33 gnome-shell
663 root 20 0 399976 3352 2984 S 1.0 0.1 0:46.92 rsyslogd
7349 qemu 20 0 1697464 956932 556 S 0.7 25.3 5:03.80 qemu-kvm
7803 qemu 20 0 1697460 708164 544 S 0.7 18.8 4:16.74 qemu-kvm
18 root 20 0 0 0 0 S 0.3 0.0 0:16.94 rcuos/0
19 root 20 0 0 0 0 S 0.3 0.0 0:18.43 rcuos/1
21 root 20 0 0 0 0 S 0.3 0.0 0:19.62 rcuos/3
671 root 20 0 207984 160 120 S 0.3 0.0 0:01.60 abrt-watch+
5676 root 20 0 0 0 0 S 0.3 0.0 0:00.28 kworker/u1+
1 root 20 0 189128 2900 1432 S 0.0 0.1 0:06.11 systemd
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
top命令的第一行:
top - 21:31:26 up 15:16, 5 users, load average: 0.61, 0.82, 0.75
- 1
依次對應:系統當前時間 up 系統到目前爲止i運行的時間, 當前登陸系統的用戶數量, load average後面的三個數字分別表示距離現在一分鐘,五分鐘,十五分鐘的負載情況。
這行信息與命令uptime顯示的信息相同
注意:load average數據是每隔5秒鐘檢查一次活躍的進程數,然後按特定算法計算出的數值。如果這個數除以邏輯CPU的數量,結果高於5的時候就表明系統在超負荷運轉了。
top命令的第二行:
Tasks: 240 total, 2 running, 238 sleeping, 0 stopped, 0 zombie
- 1
- 2
依次對應:tasks表示任務(進程),240 total則表示現在有240個進程,其中處於運行中的有2個,238個在休眠(掛起),stopped狀態即停止的進程數爲0,zombie狀態即殭屍的進程數爲0個。
top命令的第三行,cpu狀態:
%Cpu(s): 13.7 us, 1.5 sy, 0.0 ni, 84.2 id, 0.6 wa, 0.0 hi, 0.0 si, 0.0 st
- 1
依次對應:
us:user 用戶空間佔用cpu的百分比
sy:system 內核空間佔用cpu的百分比
ni:niced 改變過優先級的進程佔用cpu的百分比
空閒cpu百分比
wa:IO wait IO等待佔用cpu的百分比
hi:Hardware IRQ 硬中斷 佔用cpu的百分比
si:software 軟中斷 佔用cpu的百分比
st:被hypervisor偷去的時間
top命令第四行,內存狀態:
KiB Mem : 3775264 total, 250100 free, 2495300 used, 1029864 buff/cache
- 1
依次對應:物理內存總量(3.7G),空閒內存總量(2.5G),使用中的內存總量(2.4G),緩衝內存量
第四行中使用中的內存總量(used)指的是現在系統內核控制的內存數,空閒內存總量(free)是內核還未納入其管控範圍的數量。納入內核管理的內存不見得都在使用中,還包括過去使用過的現在可以被重複利用的內存,內核並不把這些可被重新使用的內存交還到free中去,因此在linux上free內存會越來越少,但不用爲此擔心
top命令第五行,swap交換分區:
KiB Swap: 4064252 total, 2789544 free, 1274708 used. 527664 avail Mem
- 1
依次對應:交換區總量(4G),空閒交換區總量(2.7G),使用的交換區總量(1.2G),可用交換取總量
對於內存監控,在top裏我們要時刻監控第五行swap交換分區的used,如果這個數值在不斷的變化,說明內核在不斷進行內存和swap的數據交換,這是真正的內存不夠用了。
top命令第六行是空行
top命令第七行,各進程的監控:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
- 1
依次對應:
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 — 進程名稱(命令名/命令行)
二.交互命令
1.1 ‘h’ 幫助
top命令進入視圖後,鍵入h會顯示如下界面,顯示交互命令的幫助菜單
1.2 敲ENTER或者 SPACE鍵: 刷新顯示
1.3 A’: 切換交替顯示模式
top命令視圖下,鍵入‘A‘顯示如下:
顯示4個窗口:Def (默認字段組)
Job (任務字段組)
Mem (內存字段組)
Usr (用戶字段組)
四組字段共有一個獨立的可配置的概括區域和它自己的可配置任務區域。4個窗口中只有一個窗口是當前窗口。當前窗口的名稱顯示在左上方。(注:只有當前窗口才會接受你鍵盤交互命令)
我們可以用’a’和’w’在4個 窗口間切換。’a’移到後一個窗口,’w’移到前一個窗口。用’g’命令你可以輸入一個數字來選擇當前窗口。
在鍵入‘A‘後在鍵入‘a‘的顯示如下:
1.4 ‘B’: 觸發粗體顯示
一些重要信息會以加粗字體顯示。這個命令可以切換粗體顯示
1.5 ‘d’ 或‘s’: 設置顯示的刷新間隔
當鍵下’d’或’s’時,你將被提示輸入一個值(以秒爲單位),它會以設置的值作爲刷新間隔。如果你這裏輸入了6.0,top將會每秒刷新
1.6 ‘l’、‘t’、‘m’: 切換負載、任務、內存信息的顯示
1.7 ‘f’: 字段管理
用於選擇你想要顯示的字段。用’*’標記的是已選擇的。
上下光標鍵在字段內導航,左光標鍵可以選擇字段,回車或右光標鍵確認。
按’<’移動已排序的字段到左邊,’>’則移動到右邊。
1.8 ‘R’: 反向排序
1.9 ‘c’: 觸發命令
切換是否顯示進程啓動時的完整路徑和程序名。
鍵入‘c’後顯示:
2.0 ‘i’: 空閒任務
切換顯示空閒任務