大多數系統管理員在遇到效能問題時會檢查 CPU 和記憶體利用率。Linux 中有許多實用程式可以用於檢查實體記憶體。這些命令有助於我們檢查系統中存在的實體記憶體,還允許使用者檢查各種方面的記憶體利用率。
我們大多數人只知道很少的命令,在本文中我們試圖包含所有可能的命令。
你可能會想,為什麼我想知道所有這些命令,而不是知道一些特定的和例行的命令呢。
不要覺得沒用或對此有負面的看法,因為每個人都有不同的需求和看法,所以,對於那些在尋找其它目的的人,這對於他們非常有幫助。
計算機記憶體是能夠臨時或永久儲存資訊的物理裝置。RAM 代表隨機存取記憶體,它是一種易失性記憶體,用於儲存作業系統,軟體和硬體使用的資訊。
有兩種型別的記憶體可供選擇:
主記憶體是計算機的主記憶體儲器。CPU 可以直接讀取或寫入此記憶體。它固定在電腦的主機板上。
free
顯示系統中空閒和已用的實體記憶體和交換記憶體的總量,以及核心使用的緩衝區和快取。它通過解析 /proc/meminfo
來收集資訊。
建議閱讀: free – 在 Linux 系統中檢查記憶體使用情況統計(空閒和已用)的標準命令
$ free -m total used free shared buff/cache availableMem: 1993 1681 82 81 228 153Swap: 12689 1213 11475$ free -g total used free shared buff/cache availableMem: 1 1 0 0 0 0Swap: 12 1 11
/proc/meminfo
是一個虛擬文字檔案,它包含有關系統 RAM 使用情況的大量有價值的資訊。
它報告系統上的空閒和已用記憶體(物理和交換)的數量。
$ grep MemTotal /proc/meminfoMemTotal: 2041396 kB$ grep MemTotal /proc/meminfo | awk '{print $2 / 1024}'1993.55$ grep MemTotal /proc/meminfo | awk '{print $2 / 1024 / 1024}'1.94683
top
命令是 Linux 中監視實時系統進程的基本命令之一。它顯示系統資訊和執行的進程資訊,如正常執行時間、平均負載、正在執行的任務、登入的使用者數、CPU 數量和 CPU 利用率,以及記憶體和交換資訊。執行 top
命令,然後按下 E
來使記憶體利用率以 MB 為單位顯示。
建議閱讀: TOP 命令範例監視伺服器效能
$ toptop - 14:38:36 up 1:59, 1 user, load average: 1.83, 1.60, 1.52Tasks: 223 total, 2 running, 221 sleeping, 0 stopped, 0 zombie%Cpu(s): 48.6 us, 11.2 sy, 0.0 ni, 39.3 id, 0.3 wa, 0.0 hi, 0.5 si, 0.0 stMiB Mem : 1993.551 total, 94.184 free, 1647.367 used, 252.000 buff/cacheMiB Swap: 12689.58+total, 11196.83+free, 1492.750 used. 306.465 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 9908 daygeek 20 0 2971440 649324 39700 S 55.8 31.8 11:45.74 Web Content 21942 daygeek 20 0 2013760 308700 69272 S 35.0 15.1 4:13.75 Web Content 4782 daygeek 20 0 3687116 227336 39156 R 14.5 11.1 16:47.45 gnome-shell
vmstat
是一個漂亮的標準工具,它報告 Linux 系統的虛擬記憶體統計資訊。vmstat
報告有關進程、記憶體、分頁、塊 IO、陷阱和 CPU 活動的資訊。它有助於 Linux 管理員在故障檢修時識別系統瓶頸。
建議閱讀: vmstat – 一個報告虛擬記憶體統計資訊的標準且漂亮的工具
$ vmstat -s | grep "total memory" 2041396 K total memory $ vmstat -s -S M | egrep -ie 'total memory' 1993 M total memory$ vmstat -s | awk '{print $1 / 1024 / 1024}' | head -11.94683
nmon
是另一個很棒的工具,用於在 Linux 終端上監視各種系統資源,如 CPU、記憶體、網路、磁碟、檔案系統、NFS、top 進程、Power 的微分割區和資源(Linux 版本和處理器)。
只需按下 m
鍵,即可檢視記憶體利用率統計資料(快取、活動、非活動、緩衝、空閒,以 MB 和百分比為單位)。
建議閱讀: nmon – Linux 中一個監視系統資源的漂亮的工具
┌nmon─14g──────[H for help]───Hostname=2daygeek──Refresh= 2secs ───07:24.44─────────────────┐│ Memory Stats ─────────────────────────────────────────────────────────────────────────────││ RAM High Low Swap Page Size=4 KB ││ Total MB 32079.5 -0.0 -0.0 20479.0 ││ Free MB 11205.0 -0.0 -0.0 20479.0 ││ Free Percent 34.9% 100.0% 100.0% 100.0% ││ MB MB MB ││ Cached= 19763.4 Active= 9617.7 ││ Buffers= 172.5 Swapcached= 0.0 Inactive = 10339.6 ││ Dirty = 0.0 Writeback = 0.0 Mapped = 11.0 ││ Slab = 636.6 Commit_AS = 118.2 PageTables= 3.5 ││───────────────────────────────────────────────────────────────────────────────────────────││ ││ ││ ││ ││ ││ │└───────────────────────────────────────────────────────────────────────────────────────────┘
dmidecode
是一個讀取計算機 DMI 表內容的工具,它以人類可讀的格式顯示系統硬體資訊。(DMI 意即桌面管理介面,也有人說是讀取的是 SMBIOS —— 系統管理 BIOS)
此表包含系統硬體元件的描述,以及其它有用資訊,如序列號、製造商資訊、發布日期和 BIOS 修改等。
建議閱讀: Dmidecode – 獲取 Linux 系統硬體資訊的簡便方法
# dmidecode -t memory | grep Size: Size: 8192 MB Size: No Module Installed Size: No Module Installed Size: 8192 MB Size: No Module Installed Size: No Module Installed Size: No Module Installed Size: No Module Installed Size: No Module Installed Size: No Module Installed Size: No Module Installed Size: No Module Installed Size: 8192 MB Size: No Module Installed Size: No Module Installed Size: 8192 MB Size: No Module Installed Size: No Module Installed Size: No Module Installed Size: No Module Installed Size: No Module Installed Size: No Module Installed Size: No Module Installed Size: No Module Installed
只列印已安裝的 RAM 模組。
# dmidecode -t memory | grep Size: | grep -v "No Module Installed" Size: 8192 MB Size: 8192 MB Size: 8192 MB Size: 8192 MB
匯總所有已安裝的 RAM 模組。
# dmidecode -t memory | grep Size: | grep -v "No Module Installed" | awk '{sum+=$2}END{print sum}'32768
hwinfo
意即硬體資訊,它是另一個很棒的實用工具,用於探測系統中存在的硬體,並以人類可讀的格式顯示有關各種硬體元件的詳細資訊。
它報告有關 CPU、RAM、鍵盤、滑鼠、圖形卡、聲音、儲存、網路介面、磁碟、分割區、BIOS 和網橋等的資訊。
建議閱讀: hwinfo(硬體資訊)– 一個在 Linux 系統上檢測系統硬體資訊的好工具
$ hwinfo --memory01: None 00.0: 10102 Main Memory [Created at memory.74] Unique ID: rdCR.CxwsZFjVASF Hardware Class: memory Model: "Main Memory" Memory Range: 0x00000000-0x7a4abfff (rw) Memory Size: 1 GB + 896 MB Config Status: cfg=new, avail=yes, need=no, active=unknown
lshw
(代表 Hardware Lister)是一個小巧的工具,可以生成機器上各種硬體元件的詳細報告,如記憶體設定、韌體版本、主機板設定、CPU 版本和速度、快取設定、USB、網絡卡、顯示卡、多媒體、印表機、匯流排速度等。
它通過讀取 /proc
目錄和 DMI 表中的各種檔案來生成硬體資訊。
建議閱讀: LSHW (Hardware Lister) – 一個在 Linux 上獲取硬體資訊的好工具
$ sudo lshw -short -class memory[sudo] password for daygeek: H/W path Device Class Description==================================================/0/0 memory 128KiB BIOS/0/1 memory 1993MiB System memory
inxi
是一個很棒的工具,它可以檢查 Linux 上的硬體資訊,並提供了大量的選項來獲取 Linux 系統上的所有硬體資訊,這些特性是我在 Linux 上的其它工具中從未發現的。它是從 locsmif 編寫的古老的但至今看來都異常靈活的 infobash 演化而來的。
inxi
是一個指令碼,它可以快速顯示系統硬體、CPU、驅動程式、Xorg、桌面、核心、GCC 版本、進程、RAM 使用情況以及各種其它有用的資訊,還可以用於論壇技術支援和偵錯工具。
建議閱讀: inxi – 一個檢查 Linux 上硬體資訊的好工具
$ inxi -F | grep "Memory"Info: Processes: 234 Uptime: 3:10 Memory: 1497.3/1993.6MB Client: Shell (bash) inxi: 2.3.37
screenfetch
是一個 bash 指令碼。它將自動檢測你的發行版,並在右側顯示該發行版標識的 ASCII 藝術版本和一些有價值的資訊。
建議閱讀: ScreenFetch – 以 ASCII 藝術標誌在終端顯示 Linux 系統資訊
$ screenfetch ./+o+- daygeek@ubuntu yyyyy- -yyyyyy+ OS: Ubuntu 17.10 artful ://+//////-yyyyyyo Kernel: x86_64 Linux 4.13.0-37-generic .++ .:/++++++/-.+sss/` Uptime: 44m .:++o: /++++++++/:--:/- Packages: 1831 o:+o+:++.`..`` `.-/oo+++++/ Shell: bash 4.4.12 .:+o:+o/. `+sssoo+/ Resolution: 1920x955 .++/+:+oo+o:` /sssooo. DE: GNOME /+++//+:`oo+o /::--:. WM: GNOME Shell \+/+o+++`o++o ++////. WM Theme: Adwaita .++.o+++oo+:` /dddhhh. GTK Theme: Azure [GTK2/3] .+.o+oo:. `oddhhhh+ Icon Theme: Papirus-Dark \+.++o+o``-````.:ohdhhhhh+ Font: Ubuntu 11 `:o+++ `ohhhhhhhhyo++os: CPU: Intel Core i7-6700HQ @ 2x 2.592GHz .o:`.syhhhhhhh/.oo++o` GPU: llvmpipe (LLVM 5.0, 256 bits) /osyyyyyyo++ooo+++/ RAM: 1521MiB / 1993MiB ````` +oo+++o\: `oo++.
neofetch
是一個跨平台且易於使用的命令列(CLI)指令碼,它收集你的 Linux 系統資訊,並將其作為一張圖片顯示在終端上,也可以是你的發行版徽標,或者是你選擇的任何 ascii 藝術。
建議閱讀: Neofetch – 以 ASCII 分發標誌來顯示 Linux 系統資訊
$ neofetch .-/+oossssoo+/-. daygeek@ubuntu `:+ssssssssssssssssss+:` -------------- -+ssssssssssssssssssyyssss+- OS: Ubuntu 17.10 x86_64 .ossssssssssssssssssdMMMNysssso. Host: VirtualBox 1.2 /ssssssssssshdmmNNmmyNMMMMhssssss/ Kernel: 4.13.0-37-generic +ssssssssshmydMMMMMMMNddddyssssssss+ Uptime: 47 mins /sssssssshNMMMyhhyyyyhmNMMMNhssssssss/ Packages: 1832.ssssssssdMMMNhsssssssssshNMMMdssssssss. Shell: bash 4.4.12+sssshhhyNMMNyssssssssssssyNMMMysssssss+ Resolution: 1920x955ossyNMMMNyMMhsssssssssssssshmmmhssssssso DE: ubuntu:GNOMEossyNMMMNyMMhsssssssssssssshmmmhssssssso WM: GNOME Shell+sssshhhyNMMNyssssssssssssyNMMMysssssss+ WM Theme: Adwaita.ssssssssdMMMNhsssssssssshNMMMdssssssss. Theme: Azure [GTK3] /sssssssshNMMMyhhyyyyhdNMMMNhssssssss/ Icons: Papirus-Dark [GTK3] +sssssssssdmydMMMMMMMMddddyssssssss+ Terminal: gnome-terminal /ssssssssssshdmNNNNmyNMMMMhssssss/ CPU: Intel i7-6700HQ (2) @ 2.591GHz .ossssssssssssssssssdMMMNysssso. GPU: VirtualBox Graphics Adapter -+sssssssssssssssssyyyssss+- Memory: 1620MiB / 1993MiB `:+ssssssssssssssssss+:` .-/+oossssoo+/-.
dmesg
(代表顯示訊息或驅動訊息)是大多數類 Unix 作業系統上的命令,用於列印核心的訊息緩衝區。
$ dmesg | grep "Memory"[ 0.000000] Memory: 1985916K/2096696K available (12300K kernel code, 2482K rwdata, 4000K rodata, 2372K init, 2368K bss, 110780K reserved, 0K cma-reserved)[ 0.012044] x86/mm: Memory block size: 128MB
atop
是一個用於 Linux 的 ASCII 全螢幕系統效能監視工具,它能報告所有伺服器進程的活動(即使進程在間隔期間已經完成)。
它記錄系統和進程活動以進行長期分析(預設情況下,紀錄檔檔案儲存 28 天),通過使用顏色等來突出顯示過載的系統資源。它結合可選的核心模組 netatop 顯示每個進程或執行緒的網路活動。
建議閱讀: Atop – 實時監控系統效能,資源,進程和檢查資源利用歷史
$ atop -mATOP - ubuntu 2018/03/31 19:34:08 ------------- 10s elapsedPRC | sys 0.47s | user 2.75s | | | #proc 219 | #trun 1 | #tslpi 802 | #tslpu 0 | #zombie 0 | clones 7 | | | #exit 4 |CPU | sys 7% | user 22% | irq 0% | | | idle 170% | wait 0% | | steal 0% | guest 0% | | curf 2.59GHz | curscal ?% |cpu | sys 3% | user 11% | irq 0% | | | idle 85% | cpu001 w 0% | | steal 0% | guest 0% | | curf 2.59GHz | curscal ?% |cpu | sys 4% | user 11% | irq 0% | | | idle 85% | cpu000 w 0% | | steal 0% | guest 0% | | curf 2.59GHz | curscal ?% |CPL | avg1 1.98 | | avg5 3.56 | avg15 3.20 | | | csw 14894 | | intr 6610 | | | numcpu 2 | |MEM | tot 1.9G | free 101.7M | cache 244.2M | dirty 0.2M | buff 6.9M | slab 92.9M | slrec 35.6M | shmem 97.8M | shrss 21.0M | shswp 3.2M | vmbal 0.0M | hptot 0.0M | hpuse 0.0M |SWP | tot 12.4G | free 11.6G | | | | | | | | | vmcom 7.9G | | vmlim 13.4G |PAG | scan 0 | steal 0 | | stall 0 | | | | | | | swin 3 | | swout 0 |DSK | sda | busy 0% | | read 114 | write 37 | KiB/r 21 | KiB/w 6 | | MBr/s 0.2 | MBw/s 0.0 | avq 6.50 | | avio 0.26 ms |NET | transport | tcpi 11 | tcpo 17 | udpi 4 | udpo 8 | tcpao 3 | tcppo 0 | | tcprs 3 | tcpie 0 | tcpor 0 | udpnp 0 | udpie 0 |NET | network | ipi 20 | | ipo 33 | ipfrw 0 | deliv 20 | | | | | icmpi 5 | | icmpo 0 |NET | enp0s3 0% | pcki 11 | pcko 28 | sp 1000 Mbps | si 1 Kbps | so 1 Kbps | | coll 0 | mlti 0 | erri 0 | erro 0 | drpi 0 | drpo 0 |NET | lo ---- | pcki 9 | pcko 9 | sp 0 Mbps | si 0 Kbps | so 0 Kbps | | coll 0 | mlti 0 | erri 0 | erro 0 | drpi 0 | drpo 0 | PID TID MINFLT MAJFLT VSTEXT VSLIBS VDATA VSTACK VSIZE RSIZE PSIZE VGROW RGROW SWAPSZ RUID EUID MEM CMD 1/1 2536 - 941 0 188K 127.3M 551.2M 144K 2.3G 281.2M 0K 0K 344K 6556K daygeek daygeek 14% Web Content 2464 - 75 0 188K 187.7M 680.6M 132K 2.3G 226.6M 0K 0K 212K 42088K daygeek daygeek 11% firefox 2039 - 4199 6 16K 163.6M 423.0M 132K 3.5G 220.2M 0K 0K 2936K 109.6M daygeek daygeek 11% gnome-shell 10822 - 1 0 4K 16680K 377.0M 132K 3.4G 193.4M 0K 0K 0K 0K root root 10% java
htop
是由 Hisham 用 ncurses 庫開發的用於 Linux 的互動式進程檢視器。與 top
命令相比,htop
有許多特性和選項。
建議閱讀: 使用 Htop 命令監視系統資源
$ htop 1 [||||||||||||| 13.0%] Tasks: 152, 587 thr; 1 running 2 [||||||||||||||||||||||||| 25.0%] Load average: 0.91 2.03 2.66 Mem[||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||1.66G/1.95G] Uptime: 01:14:53 Swp[|||||| 782M/12.4G] PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command 2039 daygeek 20 0 3541M 214M 46728 S 36.6 10.8 22:36.77 /usr/bin/gnome-shell 2045 daygeek 20 0 3541M 214M 46728 S 10.3 10.8 3:02.92 /usr/bin/gnome-shell 2046 daygeek 20 0 3541M 214M 46728 S 8.3 10.8 3:04.96 /usr/bin/gnome-shell 6080 daygeek 20 0 807M 37228 24352 S 2.1 1.8 0:11.99 /usr/lib/gnome-terminal/gnome-terminal-server 2880 daygeek 20 0 2205M 164M 17048 S 2.1 8.3 7:16.50 /usr/lib/firefox/firefox -contentproc -childID 6 -isForBrowser -intPrefs 6:50|7:-1|19:0|34:1000|42:20|43:5|44:10|51:0|57:128|58:10000|63:0|65:400|66 6125 daygeek 20 0 1916M 159M 92352 S 2.1 8.0 2:09.14 /usr/lib/firefox/firefox -contentproc -childID 7 -isForBrowser -intPrefs 6:50|7:-1|19:0|34:1000|42:20|43:5|44:10|51:0|57:128|58:10000|63:0|65:400|66 2536 daygeek 20 0 2335M 243M 26792 S 2.1 12.2 6:25.77 /usr/lib/firefox/firefox -contentproc -childID 1 -isForBrowser -intPrefs 6:50|7:-1|19:0|34:1000|42:20|43:5|44:10|51:0|57:128|58:10000|63:0|65:400|66 2653 daygeek 20 0 2237M 185M 20788 S 1.4 9.3 3:01.76 /usr/lib/firefox/firefox -contentproc -childID 4 -isForBrowser -intPrefs 6:50|7:-1|19:0|34:1000|42:20|43:5|44:10|51:0|57:128|58:10000|63:0|65:400|66
CoreFreq 是為 Intel 64 位處理器設計的 CPU 監控軟體,支援的架構有 Atom、Core2、Nehalem、SandyBridge 和 superior,AMD 家族 0F。
CoreFreq 提供了一個框架來以高精確度檢索 CPU 資料。
建議閱讀: CoreFreq – 一個用於 Linux 系統的強大的 CPU 監控工具
$ ./corefreq-cli -kLinux: |- Release [4.13.0-37-generic]|- Version [#42-Ubuntu SMP Wed Mar 7 14:13:23 UTC 2018]|- Machine [x86_64]Memory: |- Total RAM 2041396 KB|- Shared RAM 99620 KB|- Free RAM 108428 KB|- Buffer RAM 8108 KB|- Total High 0 KB|- Free High 0 KB
Glances 是用 Python 編寫的跨平台基於 curses(LCTT 譯註:curses 是一個 Linux/Unix 下的圖形函數庫)的系統監控工具。我們可以說它一應俱全,就像在最小的空間含有最大的資訊。它使用 psutil 庫從系統中獲取資訊。
Glances 可以監視 CPU、記憶體、負載、進程列表、網路介面、磁碟 I/O、Raid、感測器、檔案系統(和資料夾)、Docker、監視器、警報、系統資訊、正常執行時間、快速預覽(CPU、記憶體、負載)等。
建議閱讀: Glances (一應俱全)– 一個 Linux 的高階的實時繫 統效能監控工具
$ glancesubuntu (Ubuntu 17.10 64bit / Linux 4.13.0-37-generic) - IP 192.168.1.6/24 Uptime: 1:08:40CPU [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 90.6%] CPU - 90.6% nice: 0.0% ctx_sw: 4K MEM \ 78.4% active: 942M SWAP - 5.9% LOAD 2-coreMEM [||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 78.0%] user: 55.1% irq: 0.0% inter: 1797 total: 1.95G inactive: 562M total: 12.4G 1 min: 4.35SWAP [|||| 5.9%] system: 32.4% iowait: 1.8% sw_int: 897 used: 1.53G buffers: 14.8M used: 749M 5 min: 4.38 idle: 7.6% steal: 0.0% free: 431M cached: 273M free: 11.7G 15 min: 3.38NETWORK Rx/s Tx/s TASKS 211 (735 thr), 4 run, 207 slp, 0 oth sorted automatically by memory_percent, flat viewdocker0 0b 232benp0s3 12Kb 4Kb Systemd 7 Services loaded: 197 active: 196 failed: 1 lo 616b 616b_h478e48e 0b 232b CPU% MEM% VIRT RES PID USER NI S TIME+ R/s W/s Command 63.8 18.9 2.33G 377M 2536 daygeek 0 R 5:57.78 0 0 /usr/lib/firefox/firefox -contentproc -childID 1 -isForBrowser -intPrefs 6:50|7:-1|19:0|34:1000|42:20|43:5|44:10|51DefaultGateway 83ms 78.5 10.9 3.46G 217M 2039 daygeek 0 S 21:07.46 0 0 /usr/bin/gnome-shell 8.5 10.1 2.32G 201M 2464 daygeek 0 S 8:45.69 0 0 /usr/lib/firefox/firefox -new-windowDISK I/O R/s W/s 1.1 8.5 2.19G 170M 2653 daygeek 0 S 2:56.29 0 0 /usr/lib/firefox/firefox -contentproc -childID 4 -isForBrowser -intPrefs 6:50|7:-1|19:0|34:1000|42:20|43:5|44:10|51dm-0 0 0 1.7 7.2 2.15G 143M 2880 daygeek 0 S 7:10.46 0 0 /usr/lib/firefox/firefox -contentproc -childID 6 -isForBrowser -intPrefs 6:50|7:-1|19:0|34:1000|42:20|43:5|44:10|51sda1 9.46M 12K 0.0 4.9 1.78G 97.2M 6125 daygeek 0 S 1:36.57 0 0 /usr/lib/firefox/firefox -contentproc -childID 7 -isForBrowser -intPrefs 6:50|7:-1|19:0|34:1000|42:20|43:5|44:10|51
Gnome 系統監視器是一個管理正在執行的進程和監視系統資源的工具。它向你顯示正在執行的程式以及耗費的處理器時間,記憶體和磁碟空間。