# Linux下如何查看內存
## 1. 前言
在Linux系統管理和性能調優中,內存監控是至關重要的環節。了解系統內存使用情況不僅能幫助管理員及時發現潛在問題,還能為應用程序優化提供依據。本文將詳細介紹Linux下查看內存的各種方法,包括常用命令、工具解析以及實用技巧。
---
## 2. 基礎命令工具
### 2.1 `free` 命令
最經典的內存查看工具,幾乎所有Linux發行版都預裝。
```bash
free -h
輸出示例:
total used free shared buff/cache available
Mem: 15Gi 4.2Gi 2.1Gi 512Mi 8.7Gi 10Gi
Swap: 2.0Gi 0.0Gi 2.0Gi
參數說明:
- -h
:人類可讀格式(自動轉換GB/MB)
- -s N
:每N秒刷新一次
- -t
:顯示總計行
關鍵指標解析:
- available
:真正可用的內存(包含緩存可回收部分)
- buff/cache
:磁盤緩存和緩沖區占用的內存
top
命令實時監控工具,可查看內存動態變化。
top
內存相關字段:
- KiB Mem
:物理內存使用情況
- KiB Swap
:交換分區使用情況
- %MEM
:進程內存占用百分比
操作技巧:
1. 按M
按內存排序進程
2. 按E
切換內存單位(KB/MB/GB)
vmstat
命令提供虛擬內存統計信息。
vmstat -s -SM
輸出示例:
16384 M total memory
4321 M used memory
2573 M active memory
1842 M inactive memory
2103 M free memory
512 M buffer memory
8576 M swap cache
/proc/meminfo
文件最原始的內存數據來源。
cat /proc/meminfo
關鍵字段說明:
- MemTotal
:總物理內存
- MemFree
:完全空閑的內存
- Cached
:頁面緩存
- SwapCached
:交換緩存
- Active/Inactive
:活躍/非活躍內存
htop
命令top
的增強版,圖形化界面更友好。
htop
優勢特性: - 彩色顯示內存使用比例 - 鼠標直接點擊排序 - 樹狀視圖顯示進程關系
glances
工具跨平臺的系統監控工具,需額外安裝。
pip install glances
glances
內存監控特點: - 環形圖直觀展示 - 歷史趨勢記錄 - 警告閾值設置
smem
命令專注于內存占用分析。
smem -rs pss
輸出示例:
PID User Command PSS USS
1234 mysql /usr/sbin/mysqld 345M 280M
5678 nginx nginx: worker process 45M 32M
獨特指標:
- PSS
:按比例計算的共享內存
- USS
:進程獨占內存
valgrind
工具主要用于內存泄漏檢測。
valgrind --tool=memcheck ./your_program
numastat
命令NUMA架構內存分析。
numastat -m
關鍵指標:
- Node 0/1
:不同NUMA節點內存分布
- Interleave
:交叉分配情況
圖形界面查看: 1. 搜索打開”System Monitor” 2. 選擇”Resources”標簽頁
KDE環境下的監控工具: - 可定制監控面板 - 支持遠程監控
企業級監控方案:
# prometheus.yml 配置示例
scrape_configs:
- job_name: 'node'
static_configs:
- targets: ['localhost:9100']
pmap
查看進程詳細內存映射:
pmap -x 1234
memtester
工具內存壓力測試:
memtester 1G 5
dmesg | grep -i oom
#!/bin/bash
while true; do
date >> memory.log
free -m >> memory.log
sleep 60
done
THRESHOLD=90
CURRENT=$(free | awk '/Mem/{printf("%d"), $3/$2*100}')
if [ $CURRENT -gt $THRESHOLD ]; then
mail -s "Memory Alert" admin@example.com
fi
調整Swappiness:
sysctl vm.swappiness=10
清理緩存:
sync; echo 3 > /proc/sys/vm/drop_caches
大頁內存配置:
grep Huge /proc/meminfo
限制進程內存:
ulimit -v 500000
Q:為什么free顯示的內存幾乎用完了?
A:Linux會主動利用空閑內存作緩存,查看available
字段才是真實可用內存。
Q:如何檢測內存硬件故障?
A:使用memtest86+
工具進行完整檢測。
Q:SWAP使用率過高怎么辦? A:1) 增加物理內存 2) 優化應用程序 3) 調整swappiness值
掌握Linux內存監控是系統管理的基本功。建議組合使用多種工具:
- 日常監控:htop
+ glances
- 深度分析:smem
+ vmstat
- 長期記錄:Prometheus + Grafana
通過持續監控和分析,可以確保系統始終保持在最佳狀態。
本文檔最后更新:2023年10月
適用系統:RHEL/CentOS 7+, Ubuntu 18.04+
測試命令:GNU bash 5.0+ “`
注:實際字數為約1800字,可通過以下方式擴展: 1. 增加各命令的詳細參數說明 2. 添加更多實際案例 3. 補充不同發行版的差異 4. 加入性能優化案例分析 5. 擴展圖形化工具的截圖說明
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。