當前位置:
首頁 > 知識 > 檢查 Linux 中內存使用情況的 8 條命令

檢查 Linux 中內存使用情況的 8 條命令

作為一名 Linux 管理員,知道如何獲取當前可用的和已經使用的資源情況,比如內存、CPU、磁碟等,是相當重要的。

-- Magesh Maruthamuthu

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可以報告比例集大小Proportional Set Size(PSS)、唯一集大小Unique Set Size(USS)和駐留集大小Resident Set Size(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

本文由LCTT原創編譯,Linux中國榮譽推出

:看到這裡點一下在看唄?

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!


請您繼續閱讀更多來自 Linux中國 的精彩文章:

歐洲名校遭黑客勒索,付了 30 個比特幣贖金
我珍藏的 Bash 秘籍