咱們都知道, IT 基礎設施方面的大多數服務器(包括世界頂級的超級計算機)都運行在 Linux 平臺上,由於和其餘操做系統相比, Linux 更加靈活。有的操做系統對於一些微乎其微的改動和補丁更新都須要重啓,可是 Linux 不須要,只有對於一些關鍵補丁的更新, Linux 纔會須要重啓。html
Linux 系統管理員面臨的一大挑戰是如何在沒有任何停機時間的狀況下維護系統的良好運行。管理內存使用是 Linux 管理員又一個具備挑戰性的任務。free是 Linux 中一個標準的而且被普遍使用的命令,它被用來分析內存統計(空閒和已用)。今天,咱們將要討論 free 命令以及它的一些有用選項。linux
Free 命令是什麼git
free 命令可以顯示系統中物理上的空閒(free)和已用(used)內存,還有交換(swap)內存,同時,也能顯示被內核使用的緩衝(buffers)和緩存(caches)。這些信息是經過解析文件 /proc/meninfo 而收集到的。github
顯示系統內存緩存
不帶任何選項運行 free 命令會顯示系統內存,包括空閒(free)、已用(used)、交換(swap)、緩衝(buffers)、緩存(cached)和交換(swap)的內存總數。服務器
# free total used free shared buffers cached Mem: 32869744 25434276 7435468 0 412032 23361716 -/+ buffers/cache: 1660528 31209216 Swap: 4095992 0 4095992
輸出有三行:操作系統
以 MB 爲單位顯示系統內存htm
默認狀況下, free 命令以 KB - Kilobytes 爲單位輸出系統內存,這對於絕大多數管理員來講會有一點迷糊(當系統內存很大的時候,咱們中的許多人須要把輸出轉化爲以 MB 爲單位,從而纔可以理解內存大小)。爲了不這個迷惑,咱們在 free 命令後面加上 -m 選項,就能夠當即獲得以 MB - Megabytes爲單位的輸出。blog
# free -m total used free shared buffers cached Mem: 32099 24838 7261 0 402 22814 -/+ buffers/cache: 1621 30477 Swap: 3999 0 3999
如何從上面的輸出中檢查剩餘多少空閒內存?主要基於已用(used)和空閒(free)兩列。你可能在想,你只有很低的空閒內存,由於它只有 10%, 爲何?內存
若是你的 Linux 版本是最新的,那麼有一個查看實際空閒內存的選項,叫作可用(available) ,對於舊的版本,請看顯示 -/+ buffers/cache 那一行對應的空閒(free)一列。
如何從上面的輸出中檢查有多少實際已用內存?基於已用(used)和空閒(free)一列。你可能想,你已經使用了超過 95% 的內存。
以 GB 爲單位顯示內存
默認狀況下, free 命令會以 KB - kilobytes 爲單位顯示輸出,這對於大多數管理員來講會有一些迷惑,因此咱們使用上面的選項來得到以 MB - Megabytes 爲單位的輸出。可是,當服務器的內存很大(超過 100 GB 或 200 GB)時,上面的選項也會讓人很迷惑。因此,在這個時候,咱們能夠在 free 命令後面加上 -g 選項,從而當即獲得以 GB - Gigabytes 爲單位的輸出。
# free -g total used free shared buffers cached Mem: 31 24 7 0 0 22 -/+ buffers/cache: 1 29 Swap: 3 0 3
顯示所有內存行
默認狀況下, free 命令的輸出只有三行(內存、緩衝/緩存以及交換)。爲了統一以單獨一行顯示(所有(內存+交換)、已用(內存+(已用-緩衝/緩存)+交換)以及空閒(內存+(已用-緩衝/緩存)+交換),在 ‘free’ 命令後面加上 -t 選項。
# free -t total used free shared buffers cached Mem: 32869744 25434276 7435468 0 412032 23361716 -/+ buffers/cache: 1660528 31209216 Swap: 4095992 0 4095992 Total: 36965736 27094804 42740676
按延遲運行 free 命令以便更好的統計
默認狀況下, free 命令只會顯示一次統計輸出,這是不足夠進一步排除故障的,因此,能夠經過添加延遲(延遲是指在幾秒後再次更新)來按期統計內存活動。若是你想以兩秒的延遲運行 free 命令,可使用下面的命令(若是你想要更多的延遲,你能夠按照你的意願更改數值)。
下面的命令將會每 2 秒運行一次直到你退出:
# free -s 2 total used free shared buffers cached Mem: 32849392 25935844 6913548 188 182424 24632796 -/+ buffers/cache: 1120624 31728768 Swap: 20970492 0 20970492 total used free shared buffers cached Mem: 32849392 25935288 6914104 188 182424 24632796 -/+ buffers/cache: 1120068 31729324 Swap: 20970492 0 20970492 total used free shared buffers cached Mem: 32849392 25934968 6914424 188 182424 24632796 -/+ buffers/cache: 1119748 31729644 Swap: 20970492 0 20970492
按延遲和具體次數運行 free 命令
另外,你能夠按延遲和具體次數運行 free 命令,一旦達到某個次數,便自動退出。
下面的命令將會每 2 秒運行一次 free 命令,計數 5 次之後自動退出。
# free -s 2 -c 5 total used free shared buffers cached Mem: 32849392 25931052 6918340 188 182424 24632796 -/+ buffers/cache: 1115832 31733560 Swap: 20970492 0 20970492 total used free shared buffers cached Mem: 32849392 25931192 6918200 188 182424 24632796 -/+ buffers/cache: 1115972 31733420 Swap: 20970492 0 20970492 total used free shared buffers cached Mem: 32849392 25931348 6918044 188 182424 24632796 -/+ buffers/cache: 1116128 31733264 Swap: 20970492 0 20970492 total used free shared buffers cached Mem: 32849392 25931316 6918076 188 182424 24632796 -/+ buffers/cache: 1116096 31733296 Swap: 20970492 0 20970492 total used free shared buffers cached Mem: 32849392 25931308 6918084 188 182424 24632796 -/+ buffers/cache: 1116088 31733304 Swap: 20970492 0 20970492
取消緩衝區和緩存內存輸出
默認狀況下,緩衝/緩存內存是同時輸出的。爲了取消緩衝和緩存內存的輸出,能夠在 free 命令後面加上 -w 選項。(該選項在版本 3.3.12 上可用)
注意比較上面有緩衝/緩存的輸出。
# free -wh total used free shared buffers cache available Mem: 2.0G 1.6G 137M 20M 8.1M 183M 163M Swap: 2.0G 1.8G 249M
顯示最低和最高的內存統計
默認狀況下, free 命令不會顯示最低和最高的內存統計。爲了顯示最低和最高的內存統計,在 free 命令後面加上 -l 選項。
# free -l total used free shared buffers cached Mem: 32849392 25931336 6918056 188 182424 24632808 Low: 32849392 25931336 6918056 High: 0 0 0 -/+ buffers/cache: 1116104 31733288 Swap: 20970492 0 20970492
閱讀關於 free 命令的更過信息
若是你想了解 free 命令的更多可用選項,只需查看其 man 手冊。
# free --help or # man free
via: http://www.2daygeek.com/free-command-to-check-memory-usage-statistics-in-linux/
做者:MAGESH MARUTHAMUTHU 譯者:ucasFL 校對:wxy