遼寧自助網(wǎng)站建設(shè)價格seo建站技巧
文章目錄
- 前言
- 一. free命令介紹
- 二. 語法格式及常用選項
- 三. 參考案例
- 3.1 查看free相關(guān)的信息
- 3.2 以MB的形式顯示內(nèi)存的使用情況
- 3.3 以總和的形式顯示內(nèi)存的使用情況
- 3.4 周期性的查詢內(nèi)存的使用情況
- 3.5 以更人性化的形式來查看內(nèi)存的結(jié)果輸出
- 四. free在腳本中的應(yīng)用
- 總結(jié)
前言
大家好,又見面了,我是沐風(fēng)曉月,本文是專欄【linux基本功-基礎(chǔ)命令實戰(zhàn)】的第53篇文章。
專欄地址:[linux基本功-基礎(chǔ)命令專欄] , 此專欄是沐風(fēng)曉月對Linux常用命令的匯總,希望能夠加深自己的印象,以及幫助到其他的小伙伴😉😉。
如果文章有什么需要改進(jìn)的地方還請大佬不吝賜教👏👏。
🏠個人主頁:我是沐風(fēng)曉月
🧑個人簡介:大家好,我是沐風(fēng)曉月,雙一流院校計算機專業(yè)😉😉
💕 座右銘: 先努力成長自己,再幫助更多的人 ,一起加油進(jìn)步🍺🍺🍺
💕歡迎大家:這里是CSDN,我總結(jié)知識的地方,喜歡的話請三連,有問題請私信😘
一. free命令介紹
free 是一個 Linux 和 Unix 操作系統(tǒng)中常用的命令,它用于顯示系統(tǒng)中可用內(nèi)存的總量、已用內(nèi)存的總量、空閑內(nèi)存的總量和緩存的內(nèi)存量。
二. 語法格式及常用選項
依據(jù)慣例,我們還是先查看幫助,使用 free --help
[root@mufeng ~]# free --helpUsage:free [options]Options:-b, --bytes show output in bytes-k, --kilo show output in kilobytes-m, --mega show output in megabytes-g, --giga show output in gigabytes--tera show output in terabytes--peta show output in petabytes-h, --human show human-readable output--si use powers of 1000 not 1024-l, --lohi show detailed low and high memory statistics-t, --total show total for RAM + swap-s N, --seconds N repeat printing every N seconds-c N, --count N repeat printing N times, then exit-w, --wide wide output--help display this help and exit-V, --version output version information and exit
為了更直觀一些,我們把常用的參數(shù)用表格來展示:
參數(shù) | 描述 |
---|---|
-b | 以字節(jié)為單位顯示內(nèi)存使用情況; |
-k | 以千字節(jié)為單位顯示內(nèi)存使用情況; |
-m | 以兆字節(jié)為單位顯示內(nèi)存使用情況; |
-g | 以吉字節(jié)為單位顯示內(nèi)存使用情況; |
-h | 人性化顯示內(nèi)存使用情況,以適合人類閱讀的方式顯示; |
-s <秒數(shù)> | 指定間隔秒數(shù),以連續(xù)監(jiān)控內(nèi)存使用情況; |
-c <次數(shù)> | 指定監(jiān)控次數(shù),完成后退出; |
-t | 在匯總行中顯示內(nèi)存總量。 |
有了具體的參數(shù)之后,我們再來看實戰(zhàn)案例:
三. 參考案例
3.1 查看free相關(guān)的信息
[root@mufeng ~]# freetotal used free shared buff/cache available
Mem: 1863252 833224 376152 134604 653876 657068
Swap: 2097148 29448 2067700
這里出現(xiàn)的參數(shù)的解釋:
- total:物理內(nèi)存總量。
- used:已經(jīng)使用的物理內(nèi)存量。
- free:尚未使用的物理內(nèi)存量。
- shared:被共享使用的物理內(nèi)存量
- buffers:被緩存的物理內(nèi)存量。
- cached:被緩存的硬盤文件的物理內(nèi)存量。
- available:剩余可用的物理內(nèi)存量。
- Swaptotal:交換空間總量。
- Swap used:已經(jīng)使用的交換空間量
- Swap free:尚未使用的交換空間量
示例輸出:
total used free shared buffers cached
Mem: 1024000 999000 24000 3000 12000 700000
-/+ buffers/cache: 287000 737000
Swap: 524284 0 524284
上述示例輸出解釋:
物理內(nèi)存總量為1GB(1024000KB)。
已經(jīng)使用的物理內(nèi)存量為999MB(999000KB)。
尚未使用的物理內(nèi)存量為24MB(24000KB)。
被共享使用的物理內(nèi)存量為3MB(3000KB)。
被緩存的物理內(nèi)存量為12MB(12000KB)。
被緩存的硬盤文件的物理內(nèi)存量為700MB(700000KB)。
剩余可用的物理內(nèi)存量為737MB(737000KB)。
交換空間總量為512MB(524284KB)。
已經(jīng)使用的交換空間量為0。
尚未使用的交換空間量為512MB(524284KB)。
問題1: 那buffers和cached都是緩存,兩者有什么區(qū)別呢?
的確buffers 和 cached 都是用于緩存的內(nèi)存,但是它們的緩存對象不同:
buffers:用于緩存塊設(shè)備(如硬盤、光驅(qū)等)的輸入輸出數(shù)據(jù),緩存的是磁盤塊的數(shù)據(jù)。這個緩存會在數(shù)據(jù)被寫入磁盤后被釋放掉,不會持久化到磁盤上。
cached:用于緩存文件系統(tǒng)的數(shù)據(jù),緩存的是文件數(shù)據(jù)。這個緩存會在文件被修改時被寫入磁盤,從而變成持久化的緩存。
因此,buffers 主要是用于優(yōu)化磁盤 I/O 操作,而 cached 主要是用于優(yōu)化文件讀取操作。在 Linux 系統(tǒng)中,buffers 和 cached 都會占用未被應(yīng)用程序使用的內(nèi)存,以提高系統(tǒng)性能和響應(yīng)速度。當(dāng)需要更多內(nèi)存時,它們可以被釋放掉,以供應(yīng)用程序使用。
問題2 : free中的available 是什么
“available” 的美音標(biāo)是 /??ve?l?bl/
available 字段是指系統(tǒng)中可用的內(nèi)存量,它表示系統(tǒng)當(dāng)前可用于分配給新進(jìn)程使用的內(nèi)存量。這個值并不完全等于 free 字段,因為還考慮了緩存的內(nèi)存和已經(jīng)被分配但可以被回收的內(nèi)存。
available 字段的計算方法是:free + buffers + cached - low water mark,其中 low water mark 是一個系統(tǒng)內(nèi)部預(yù)留的緩沖區(qū),用于保證系統(tǒng)能夠保持足夠的緩存能力,以應(yīng)對高峰期的內(nèi)存需求。
available 字段可以用來估算系統(tǒng)還可以為新進(jìn)程提供的內(nèi)存空間,因為它考慮了系統(tǒng)當(dāng)前緩存的內(nèi)存,以及一些可以被回收的內(nèi)存。但是需要注意的是,這個值并不是絕對精確的,因為它只是一個估算值,而且可能會隨著系統(tǒng)使用情況的變化而變化。
從應(yīng)用程序的角度來說,可用內(nèi)存=系統(tǒng)free memory+buffers+cached。
3.2 以MB的形式顯示內(nèi)存的使用情況
以M對形式顯示,此處用的是MB
[root@mufeng ~]# free -mtotal used free shared buff/cache available
Mem: 1819 813 367 131 638 641
Swap: 2047 28 2019
[root@mufeng ~]#
3.3 以總和的形式顯示內(nèi)存的使用情況
此處使用 -t參數(shù),代碼如下:
[root@mufeng ~]# free -ttotal used free shared buff/cache available
Mem: 1863252 833156 376216 134604 653880 657136
Swap: 2097148 29448 2067700
Total: 3960400 862604 2443916
[root@mufeng ~]#
3.4 周期性的查詢內(nèi)存的使用情況
-s參數(shù)可以周期行的查詢內(nèi)存的使用情況:
比如每五秒鐘查詢一次:
[root@mufeng ~]# free -s 5total used free shared buff/cache available
Mem: 1863252 833220 376152 134604 653880 657072
Swap: 2097148 29448 2067700total used free shared buff/cache available
Mem: 1863252 833220 376152 134604 653880 657072
Swap: 2097148 29448 2067700
可以看到每五秒鐘會跳一次,也就是查詢一次。
3.5 以更人性化的形式來查看內(nèi)存的結(jié)果輸出
此處我們用到 -h參數(shù)
[root@mufeng ~]# free -htotal used free shared buff/cache available
Mem: 1.8G 813M 367M 131M 638M 641M
Swap: 2.0G 28M 2.0G
[root@mufeng ~]#
以上就是free命令的全部內(nèi)容,后續(xù)如果有新的感悟在繼續(xù)添加。
四. free在腳本中的應(yīng)用
下面是一個關(guān)于free命令的腳本示例,該腳本可以在Linux系統(tǒng)中使用,用于監(jiān)視系統(tǒng)的內(nèi)存使用情況,并在內(nèi)存不足時發(fā)出警告。
#!/bin/bashTHRESHOLD=80 # 內(nèi)存使用率超過80%時發(fā)出警告while true
doOUTPUT=$(free | grep Mem)TOTAL=$(echo $OUTPUT | awk '{print $2}')USED=$(echo $OUTPUT | awk '{print $3}')FREE=$(echo $OUTPUT | awk '{print $4}')PERCENTAGE=$((USED*100/TOTAL))DATE=$(date)if [ $PERCENTAGE -gt $THRESHOLD ]; thenecho "警告!內(nèi)存使用率超過 $THRESHOLD% 在 $DATE!"fisleep 10
done
腳本解釋:
-
THRESHOLD=80:定義一個變量THRESHOLD,表示內(nèi)存使用率的閾值,即當(dāng)內(nèi)存使用率超過80%時發(fā)出警告。
-
while true:無限循環(huán),不停地監(jiān)視內(nèi)存使用情況。
-
OUTPUT=$(free | grep Mem):執(zhí)行free命令,并使用grep命令過濾出其中包含“Mem”的行,將輸出結(jié)果賦值給變量OUTPUT。
-
TOTAL=$(echo $OUTPUT | awk ‘{print $2}’):使用echo和awk命令從變量OUTPUT中提取出物理內(nèi)存總量,將結(jié)果賦值給變量TOTAL。
-
USED=$(echo $OUTPUT | awk ‘{print $3}’):使用echo和awk命令從變量OUTPUT中提取出已使用的物理內(nèi)存量,將結(jié)果賦值給變量USED。
-
FREE=$(echo $OUTPUT | awk ‘{print $4}’):使用echo和awk命令從變量OUTPUT中提取出尚未使用的物理內(nèi)存量,將結(jié)果賦值給變量FREE。
-
PERCENTAGE=$((USED*100/TOTAL)):計算內(nèi)存使用率的百分比,將結(jié)果賦值給變量PERCENTAGE。
-
DATE=$(date):獲取當(dāng)前系統(tǒng)時間,將結(jié)果賦值給變量DATE。
-
if [ $PERCENTAGE -gt $THRESHOLD ]; then:如果內(nèi)存使用率超過閾值,即PERCENTAGE大于THRESHOLD,則執(zhí)行下一步。
-
echo “警告!內(nèi)存使用率超過 $THRESHOLD% 在 $DATE!”:在控制臺上輸出警告信息,包括當(dāng)前時間和內(nèi)存使用率。
-
sleep 10:休眠10秒,等待下一次監(jiān)視。
總結(jié)
free命令在日常工作中,應(yīng)用的比較廣泛,一定要認(rèn)真學(xué)習(xí),記熟記牢常用參數(shù)。
💕💕💕 好啦,這就是今天要分享給大家的全部內(nèi)容了,我們下期再見!? ? ?
🍻🍻🍻如果你喜歡的話,就不要吝惜你的一鍵三連了~