# Linux系統的free命令有什么用
## 引言
在Linux系統管理和性能調優過程中,**內存使用情況**是最關鍵的監控指標之一。作為系統管理員或開發者,了解如何快速獲取準確的內存信息至關重要。Linux系統提供了多種內存監控工具,其中`free`命令以其簡潔直觀的輸出成為最常用的基礎工具之一。本文將全面解析`free`命令的功能、輸出解讀、參數使用以及實際應用場景,幫助讀者掌握這個內存分析利器。
## 一、free命令概述
### 1.1 命令定義
`free`是Linux系統中用于顯示系統內存使用情況(包括物理內存、交換分區和內核緩沖區)的標準命令行工具。它從`/proc/meminfo`文件中提取數據并以人類可讀的格式呈現。
### 1.2 基本語法
```bash
free [options]
執行free -h
命令后顯示:
total used free shared buff/cache available
Mem: 15Gi 4.2Gi 2.1Gi 512Mi 8.7Gi 10Gi
Swap: 2.0Gi 1.5Gi 512Mi
關鍵理解:Linux會盡可能利用空閑內存做磁盤緩存(cache),因此看到”free”內存少不必驚慌,這是正常優化行為。
字段變化 | 舊版本 | 新版本 |
---|---|---|
緩存顯示 | -/+ buffers/cache行 | 直接合并為buff/cache列 |
可用內存 | 需計算 | 直接顯示available值 |
-b/-k/-m/-g
:分別以Bytes/KB/MB/GB為單位顯示-h
:自動選擇人類可讀格式(推薦)-t
:顯示內存+swap總和行-s N
:每N秒刷新一次(適合持續監控)-c N
:與-s配合,設置刷新次數-l
:顯示詳細的高低內存統計-w
:將buffers和cache分開顯示--si
:使用1000進制而非1024進制# 每2秒刷新,共顯示5次,人類可讀格式
free -h -s 2 -c 5
# 顯示詳細內存分布(適用于嵌入式系統)
free -lhw
$ free -h
快速判斷: - 如果available接近free → 緩存使用少 - swap使用率>30% → 可能需要優化或擴容內存
通過定時監控觀察used內存持續增長:
watch -n 1 free -h
執行echo 3 > /proc/sys/vm/drop_caches
后:
free -h; echo 3 > /proc/sys/vm/drop_caches; free -h
對比buff/cache的變化
#!/bin/bash
MIN_MEM=500 # MB
available=$(free -m | awk '/Mem:/ {print $7}')
if [ $available -lt $MIN_MEM ]; then
echo "警告:可用內存不足!當前: ${available}MB"
fi
free
:靜態快照,適合腳本調用top/htop
:動態進程級視圖vmstat -s | grep -i "memory"
free -h
綜合查看內存分頁統計
在Prometheus+Grafana監控體系中,可通過node_exporter收集的內存指標與free命令結果相互驗證。
類型 | 作用 | 回收優先級 |
---|---|---|
buffers | 塊設備I/O緩存(元數據) | 高 |
cache | 文件系統緩存(實際文件內容) | 低 |
sysctl vm.swappiness=10
# 僅獲取可用內存數值(MB)
free -m | awk '/Mem:/ {print $7}'
while true; do
echo "$(date '+%T') $(free -h | awk '/Mem:/ {print $3,$7}')" >> mem.log
sleep 5
done
# 計算內存壓力指數(0-100)
pressure=$(free | awk '/Mem:/ {printf "%.0f", ($3-$7)/$2*100}')
echo "內存壓力: ${pressure}%"
監控策略:
性能優化:
文檔記錄:
free
命令作為Linux內存分析的基礎工具,雖然簡單但蘊含豐富信息。通過本文的系統講解,讀者應能:
- 準確解讀free輸出的每個字段
- 根據需求選擇合適的參數組合
- 將free命令集成到日常監控體系中
- 快速識別內存異常情況
掌握好這個看似簡單的工具,往往能在復雜的系統問題排查中起到事半功倍的效果。建議結合實際操作加深理解,讓free
命令成為你Linux工具箱中的得力助手。
命令 | 功能描述 |
---|---|
vmstat -s |
顯示詳細內存統計 |
cat /proc/meminfo |
查看原始內存數據 |
top |
動態查看進程內存占用 |
slabtop |
顯示內核slab內存使用 |
”`
注:本文實際約3200字(含代碼和表格),可根據需要調整詳細程度。建議讀者在實際Linux終端中運行示例命令以加深理解。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。