檢查 Linux 中記憶體使用情況的 8 條命令
Linux 並不像 Windows,你經常不會有圖形介面可供使用,特別是在伺服器環境中。
作為一名 Linux 管理員,知道如何獲取當前可用的和已經使用的資源情況,比如記憶體、CPU、磁碟等,是相當重要的。如果某一應用在你的系統上佔用了太多的資源,導致你的系統無法達到最優狀態,那麼你需要找到並修正它。
如果你想找到消耗記憶體前十名的程式,你需要去閱讀這篇文章:如何在 Linux 中找出記憶體消耗最大的程式。
在 Linux 中,命令能做任何事,所以使用相關命令吧。在這篇教程中,我們將會給你展示 8 個有用的命令來即檢視在 Linux 系統中記憶體的使用情況,包括 RAM 和交換分割槽。
建立交換分割槽在 Linux 系統中是非常重要的,如果你想了解如何建立,可以去閱讀這篇文章:在 Linux 系統上建立交換分割槽。
下面的命令可以幫助你以不同的方式檢視 Linux 記憶體使用情況。
free
命令/proc/meminfo
檔案vmstat
命令ps_mem
命令smem
命令top
命令htop
命令glances
命令
1)如何使用 free 命令檢視 Linux 記憶體使用情況
free 命令 是被 Linux 管理員廣泛使用的主要命令。但是它提供的資訊比 /proc/meminfo
檔案少。
free
命令會分別展示實體記憶體和交換分割槽記憶體中已使用的和未使用的數量,以及核心使用的緩衝區和快取。
這些資訊都是從 /proc/meminfo
檔案中獲取的。
# free -m
total used free shared buff/cache available
Mem: 15867 9199 1702 3315 4965 3039
Swap: 17454 666 16788
total
:總的記憶體量used
:被當前執行中的程式使用的記憶體量(used
=total
–free
–buff/cache
)free
: 未被使用的記憶體量(free
=total
–used
–buff/cache
)shared
: 在兩個或多個程式之間共享的記憶體量buffers
: 記憶體中保留用於核心記錄程式佇列請求的記憶體量cache
: 在 RAM 中儲存最近使用過的檔案的頁緩衝大小buff/cache
: 緩衝區和快取總的使用記憶體量available
: 可用於啟動新應用的可用記憶體量(不含交換分割槽)
2) 如何使用 /proc/meminfo 檔案檢視 Linux 記憶體使用情況
/proc/meminfo
檔案是一個包含了多種記憶體使用的實時資訊的虛擬檔案。它展示記憶體狀態單位使用的是 kB,其中大部分屬性都難以理解。然而它也包含了記憶體使用情況的有用資訊。
# cat /proc/meminfo
MemTotal: 16248572 kB
MemFree: 1764576 kB
MemAvailable: 3136604 kB
Buffers: 234132 kB
Cached: 4731288 kB
SwapCached: 28516 kB
Active: 9004412 kB
Inactive: 3552416 kB
Active(anon): 8094128 kB
Inactive(anon): 2896064 kB
Active(file): 910284 kB
Inactive(file): 656352 kB
Unevictable: 80 kB
Mlocked: 80 kB
SwapTotal: 17873388 kB
SwapFree: 17191328 kB
Dirty: 252 kB
Writeback: 0 kB
AnonPages: 7566736 kB
Mapped: 3692368 kB
Shmem: 3398784 kB
Slab: 278976 kB
SReclaimable: 125480 kB
SUnreclaim: 153496 kB
KernelStack: 23936 kB
PageTables: 73880 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 25997672 kB
Committed_AS: 24816804 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 0 kB
VmallocChunk: 0 kB
Percpu: 3392 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
ShmemHugePages: 0 kB
ShmemPmdMapped: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
Hugetlb: 0 kB
DirectMap4k: 1059088 kB
DirectMap2M: 14493696 kB
DirectMap1G: 2097152 kB
3) 如何使用 vmstat 命令檢視 Linux 記憶體使用情況
vmstat 命令 是另一個報告虛擬記憶體統計資訊的有用工具。
vmstat
報告的資訊包括:程式、記憶體、頁面對映、塊 I/O、陷阱、磁碟和 CPU 特性資訊。vmstat
不需要特殊的許可權,並且它可以幫助診斷系統瓶頸。
# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 682060 1769324 234188 4853500 0 3 25 91 31 16 34 13 52 0 0
如果你想詳細瞭解每一項的含義,閱讀下面的描述。
procs
:程式r
: 可以執行的程式數目(正在執行或等待執行)b
: 處於不可中斷睡眠中的程式數目
memory
:記憶體swpd
: 使用的虛擬記憶體數量free
: 空閒的記憶體數量buff
: 用作緩衝區記憶體的數量cache
: 用作快取記憶體的數量inact
: 不活動的記憶體數量(使用-a
選項)active
: 活動的記憶體數量(使用-a
選項)
Swap
:交換分割槽si
: 每秒從磁碟交換的記憶體數量so
: 每秒交換到磁碟的記憶體數量
IO
:輸入輸出bi
: 從一個塊裝置中收到的塊(塊/秒)bo
: 傳送到一個塊裝置的塊(塊/秒)
System
:系統in
: 每秒的中斷次數,包括時鐘。cs
: 每秒的上下文切換次數。
CPU
:下面這些是在總的 CPU 時間佔的百分比us
: 花費在非核心程式碼上的時間佔比(包括使用者時間,排程時間)sy
: 花費在核心程式碼上的時間佔比 (系統時間)id
: 花費在閒置的時間佔比。在 Linux 2.5.41 之前,包括 I/O 等待時間wa
: 花費在 I/O 等待上的時間佔比。在 Linux 2.5.41 之前,包括在空閒時間中st
: 被虛擬機器偷走的時間佔比。在 Linux 2.6.11 之前,這部分稱為 unknown
執行下面的命令檢視詳細的資訊。
# vmstat -s
16248580 K total memory
2210256 K used memory
2311820 K active memory
2153352 K inactive memory
11368812 K free memory
107584 K buffer memory
2561928 K swap cache
17873388 K total swap
0 K used swap
17873388 K free swap
44309 non-nice user cpu ticks
164 nice user cpu ticks
14332 system cpu ticks
382418 idle cpu ticks
1248 IO-wait cpu ticks
1407 IRQ cpu ticks
2147 softirq cpu ticks
0 stolen cpu ticks
1022437 pages paged in
260296 pages paged out
0 pages swapped in
0 pages swapped out
1424838 interrupts
4979524 CPU context switches
1577163147 boot time
3318 forks
4) 如何使用 ps_mem 命令檢視 Linux 記憶體使用情況
ps_mem 是一個用來檢視當前記憶體使用情況的簡單的 Python 指令碼。該工具可以確定每個程式使用了多少記憶體(不是每個程式)。
該工具採用如下的方法計算每個程式使用記憶體:總的使用 = 程式程式私有的記憶體 + 程式程式共享的記憶體。
計算共享記憶體是存在不足之處的,該工具可以為執行中的核心自動選擇最準確的方法。
# ps_mem
Private + Shared = RAM used Program
180.0 KiB + 30.0 KiB = 210.0 KiB xf86-video-intel-backlight-helper (2)
192.0 KiB + 66.0 KiB = 258.0 KiB cat (2)
312.0 KiB + 38.5 KiB = 350.5 KiB lvmetad
380.0 KiB + 25.5 KiB = 405.5 KiB crond
392.0 KiB + 32.5 KiB = 424.5 KiB rtkit-daemon
852.0 KiB + 117.0 KiB = 969.0 KiB gnome-session-ctl (2)
928.0 KiB + 56.5 KiB = 984.5 KiB gvfs-mtp-volume-monitor
1.0 MiB + 42.5 KiB = 1.0 MiB dconf-service
1.0 MiB + 106.5 KiB = 1.1 MiB gvfs-goa-volume-monitor
1.0 MiB + 180.5 KiB = 1.2 MiB gvfsd
.
.
5.3 MiB + 3.0 MiB = 8.3 MiB evolution-addressbook-factory
8.5 MiB + 1.2 MiB = 9.7 MiB gnome-session-binary (4)
7.5 MiB + 3.1 MiB = 10.5 MiB polkitd
7.4 MiB + 3.3 MiB = 10.7 MiB pulseaudio (2)
7.0 MiB + 7.0 MiB = 14.0 MiB msm_notifier
12.7 MiB + 2.3 MiB = 15.0 MiB evolution-source-registry
13.3 MiB + 2.5 MiB = 15.8 MiB gnome-terminal-server
15.8 MiB + 1.0 MiB = 16.8 MiB tracker-miner-fs
18.7 MiB + 1.8 MiB = 20.5 MiB python3.7
16.6 MiB + 4.0 MiB = 20.5 MiB evolution-calendar-factory
22.3 MiB + 753.0 KiB = 23.0 MiB gsd-keyboard (2)
22.4 MiB + 832.0 KiB = 23.2 MiB gsd-wacom (2)
20.8 MiB + 2.5 MiB = 23.3 MiB blueman-tray
22.0 MiB + 1.8 MiB = 23.8 MiB blueman-applet
23.1 MiB + 934.0 KiB = 24.0 MiB gsd-xsettings (2)
23.7 MiB + 1.2 MiB = 24.9 MiB gsd-media-keys (2)
23.4 MiB + 1.6 MiB = 25.0 MiB gsd-color (2)
23.9 MiB + 1.2 MiB = 25.1 MiB gsd-power (2)
16.5 MiB + 8.9 MiB = 25.4 MiB evolution-alarm-notify
27.2 MiB + 2.0 MiB = 29.2 MiB systemd-journald
28.7 MiB + 2.8 MiB = 31.5 MiB c
29.6 MiB + 2.2 MiB = 31.8 MiB chrome-gnome-sh (2)
43.9 MiB + 6.8 MiB = 50.7 MiB WebExtensions
46.7 MiB + 6.7 MiB = 53.5 MiB goa-daemon
86.5 MiB + 55.2 MiB = 141.7 MiB Xorg (2)
191.4 MiB + 24.1 MiB = 215.4 MiB notepadqq-bin
306.7 MiB + 29.0 MiB = 335.7 MiB gnome-shell (2)
601.6 MiB + 77.7 MiB = 679.2 MiB firefox
1.0 GiB + 109.7 MiB = 1.1 GiB chrome (15)
2.3 GiB + 123.1 MiB = 2.5 GiB Web Content (8)
----------------------------------
5.6 GiB
==================================
5)如何使用 smem 命令檢視 Linux 記憶體使用情況
smem 是一個可以為 Linux 系統提供多種記憶體使用情況報告的工具。不同於現有的工具,smem
可以報告比例集大小(PSS)、唯一集大小(USS)和駐留集大小(RSS)。
- 比例集大小(PSS):庫和應用在虛擬記憶體系統中的使用量。
- 唯一集大小(USS):其報告的是非共享記憶體。
- 駐留集大小(RSS):實體記憶體(通常多程式共享)使用情況,其通常高於記憶體使用量。
# smem -tk
PID User Command Swap USS PSS RSS
3383 daygeek cat 0 92.0K 123.0K 1.7M
3384 daygeek cat 0 100.0K 129.0K 1.7M
1177 daygeek /usr/lib/gnome-session-ctl 0 436.0K 476.0K 4.6M
1171 daygeek /usr/bin/dbus-daemon --conf 0 524.0K 629.0K 3.8M
1238 daygeek /usr/lib/xdg-permission-sto 0 592.0K 681.0K 5.9M
1350 daygeek /usr/lib/gsd-screensaver-pr 0 652.0K 701.0K 5.8M
1135 daygeek /usr/lib/gdm-x-session --ru 0 648.0K 723.0K 6.0M
.
.
1391 daygeek /usr/lib/evolution-data-ser 0 16.5M 25.2M 63.3M
1416 daygeek caffeine-ng 0 28.7M 31.4M 66.2M
4855 daygeek /opt/google/chrome/chrome - 0 38.3M 46.3M 120.6M
2174 daygeek /usr/lib/firefox/firefox -c 0 44.0M 50.7M 120.3M
1254 daygeek /usr/lib/goa-daemon 0 46.7M 53.3M 80.4M
3416 daygeek /opt/google/chrome/chrome - 0 44.7M 54.2M 103.3M
4782 daygeek /opt/google/chrome/chrome - 0 57.2M 65.8M 142.3M
1137 daygeek /usr/lib/Xorg vt2 -displayf 0 77.2M 129.6M 192.3M
3376 daygeek /opt/google/chrome/chrome 0 117.8M 131.0M 210.9M
4448 daygeek /usr/lib/firefox/firefox -c 0 124.4M 133.8M 224.1M
3558 daygeek /opt/google/chrome/chrome - 0 157.3M 165.7M 242.2M
2310 daygeek /usr/lib/firefox/firefox -c 0 159.6M 169.4M 259.6M
4331 daygeek /usr/lib/firefox/firefox -c 0 176.8M 186.2M 276.8M
4034 daygeek /opt/google/chrome/chrome - 0 179.3M 187.9M 264.6M
3911 daygeek /opt/google/chrome/chrome - 0 183.1M 191.8M 269.4M
3861 daygeek /opt/google/chrome/chrome - 0 199.8M 208.2M 285.2M
2746 daygeek /usr/bin/../lib/notepadqq/n 0 193.5M 217.5M 261.5M
1194 daygeek /usr/bin/gnome-shell 0 203.7M 219.0M 285.1M
2945 daygeek /usr/lib/firefox/firefox -c 0 294.5M 308.0M 410.2M
2786 daygeek /usr/lib/firefox/firefox -c 0 341.2M 354.3M 459.1M
4193 daygeek /usr/lib/firefox/firefox -c 0 417.4M 427.6M 519.3M
2651 daygeek /usr/lib/firefox/firefox -c 0 417.0M 430.1M 535.6M
2114 daygeek /usr/lib/firefox/firefox -c 0 430.6M 473.9M 610.9M
2039 daygeek /usr/lib/firefox/firefox -- 0 601.3M 677.5M 840.6M
-------------------------------------------------------------------------------
90 1 0 4.8G 5.2G 8.0G
6) 如何使用 top 命令檢視 Linux 記憶體使用情況
top 命令 是一個 Linux 系統的管理員最常使用的用於檢視程式的資源使用情況的命令。
該命令會展示了系統總的記憶體量、當前記憶體使用量、空閒記憶體量和緩衝區使用的記憶體總量。此外,該命令還會展示總的交換空間記憶體量、當前交換空間的記憶體使用量、空閒的交換空間記憶體量和快取使用的記憶體總量。
# top -b | head -10
top - 11:04:39 up 40 min, 1 user, load average: 1.59, 1.42, 1.28
Tasks: 288 total, 2 running, 286 sleeping, 0 stopped, 0 zombie
%Cpu(s): 13.3 us, 1.5 sy, 0.0 ni, 84.4 id, 0.0 wa, 0.3 hi, 0.5 si, 0.0 st
KiB Mem : 16248572 total, 7755928 free, 4657736 used, 3834908 buff/cache
KiB Swap: 17873388 total, 17873388 free, 0 used. 9179772 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2114 daygeek 20 3182736 616624 328228 R 83.3 3.8 7:09.72 Web Content
2039 daygeek 20 4437952 849616 261364 S 13.3 5.2 7:58.54 firefox
1194 daygeek 20 4046856 291288 165460 S 4.2 1.8 1:57.68 gnome-shell
4034 daygeek 20 808556 273244 88676 S 4.2 1.7 1:44.72 chrome
2945 daygeek 20 3309832 416572 150112 S 3.3 2.6 4:04.60 Web Content
1137 daygeek 20 564316 197292 183380 S 2.5 1.2 2:55.76 Xorg
2651 daygeek 20 3098420 547260 275700 S 1.7 3.4 2:15.96 Web Content
2786 daygeek 20 2957112 463912 240744 S 1.7 2.9 3:22.29 Web Content
1 root 20 182756 10208 7760 S 0.8 0.1 0:04.51 systemd
442 root -51 S 0.8 0:05.02 irq/141-iw+
1426 daygeek 20 373660 48948 29820 S 0.8 0.3 0:03.55 python3
2174 daygeek 20 2466680 122196 78604 S 0.8 0.8 0:17.75 WebExtensi+
7) 如何使用 htop 命令檢視 Linux 記憶體使用情況
htop 命令 是一個可互動的 Linux/Unix 系統程式檢視器。它是一個文字模式應用,且使用它需要 Hisham 開發的 ncurses 庫。
該名令的設計目的使用來代替 top
命令。該命令與 top
命令很相似,但是其允許你可以垂直地或者水平地的滾動以便可以檢視系統中所有的程式情況。
htop
命令擁有不同的顏色,這個額外的優點當你在追蹤系統效能情況時十分有用。
此外,你可以自由地執行與程式相關的任務,比如殺死程式或者改變程式的優先順序而不需要其程式號(PID)。
8)如何使用 glances 命令檢視 Linux 記憶體使用情況
Glances 是一個 Python 編寫的跨平臺的系統監視工具。
你可以在一個地方檢視所有資訊,比如:CPU 使用情況、記憶體使用情況、正在執行的程式、網路介面、磁碟 I/O、RAID、感測器、檔案系統資訊、Docker、系統資訊、執行時間等等。
via: https://www.2daygeek.com/linux-commands-check-memory-usage/
作者:Magesh Maruthamuthu 選題:lujun9972 譯者:萌新阿巖 校對:wxy
訂閱“Linux 中國”官方小程式來檢視
相關文章
- Linux如何通過命令檢視伺服器的記憶體條使用情況Linux伺服器記憶體
- Linux檢視伺服器記憶體使用情況的命令Linux伺服器記憶體
- 在Linux中,如何檢查系統的CPU和記憶體使用情況?Linux記憶體
- 檢視LINUX程式記憶體佔用情況Linux記憶體
- linux下檢視記憶體使用情況Linux記憶體
- 檢測Linux記憶體使用情況的free命令的10個例子Linux記憶體
- linux 檢視某個程序和服務記憶體佔用情況命令Linux記憶體
- Linux檢視CPU和記憶體使用情況Linux記憶體
- 如何檢查 Android 應用的記憶體使用情況Android記憶體
- SOLARISE檢視記憶體使用情況記憶體
- Linux 檢視記憶體使用情況的幾種方法Linux記憶體
- Mongodb記憶體管理和使用情況情況查詢MongoDB記憶體
- 使用 vmstat 命令確定記憶體使用情況記憶體
- Linux檢視磁碟目錄記憶體空間使用情況Linux記憶體
- Linux技術——linux下檢視記憶體和CPU的使用情況Linux記憶體
- 使用 top 命令瞭解 Fedora 的記憶體使用情況記憶體
- 總結Linux下檢視記憶體使用情況的多種方法Linux記憶體
- Linux效能優化:記憶體使用情況分析Linux優化記憶體
- 使用show engine innodb status 檢視記憶體使用情況記憶體
- 用以檢查Linux記憶體使用的5個命令Linux記憶體
- 如何觀察程式的記憶體佔用情況記憶體
- 檢視 Linux 系統中程式和使用者的記憶體使用情況Linux記憶體
- Linux有問必答:如何檢查Linux的記憶體使用狀況Linux記憶體
- java程式碼實現檢視Tomcat記憶體使用情況JavaTomcat記憶體
- 如何使用du 和 ncdu 兩個命令檢查 Linux 磁碟使用情況?Linux
- 用 Bash 指令碼監控 Linux 上的記憶體使用情況指令碼Linux記憶體
- linux命令檢視記憶體命令free -h whereis locate find查詢命令Linux記憶體
- 如何檢視Linux的記憶體使用狀況Linux記憶體
- JRockit jstat 檢視系統記憶體資源使用情況JS記憶體
- 檢視主機的記憶體使用情 (轉)記憶體
- Linux系統下分析記憶體使用情況的管理工具Linux記憶體
- Redis 記憶體突增時,如何定量分析其記憶體使用情況Redis記憶體
- linux c程式記憶體檢查器LinuxC程式記憶體
- linux檢視埠占用情況Linux
- 如何檢查Javascript中的記憶體洩漏JavaScript記憶體
- 監控 cpu 記憶體 網路卡的使用情況的一個命令 比較實用記憶體
- 使用netstat命令檢視埠的使用情況
- 論NVIDIA下一代GPU中的ECC記憶體應用情況GPU記憶體