以下文章轉載自:Linux 檢查硬碟使用量 df 指令教學與指令稿範例 - G. T. Wang
本篇介紹如何在 Linux 系統中使用 df 指令檢查磁碟的使用量與剩餘空間,並提供自動檢查磁碟空間的指令稿範例。
對於 Linux 管理者來說,硬碟空間的使用量是時常需要檢查的系統資訊,如果硬碟空間沒有控管好,當硬碟空間耗盡時,就算再穩定的系統也會當機。
在 Linux 中若要檢查系統上每一顆硬碟與各個分割區的空間使用量,可以使用 df 這個指令,以下是這個指令的使用教學與常用範例。
檢查硬碟使用量
直接執行 df 指令即可顯示目前系統上各個磁碟分割區的狀況:
# 檢查硬碟使用量
df
檔案系統 | 1K-區段 | 已用 | 可用 | 已用% | 掛載點 |
---|---|---|---|---|---|
udev | 4007432 | 0 | 4007432 | 0% | /dev |
tmpfs | 806588 | 9648 | 796940 | 2% | /run |
/dev/sda6 | 123198468 | 61872040 | 55045264 | 53% | / |
tmpfs | 4032920 | 61868 | 3971052 | 2% | /dev/shm |
tmpfs | 5120 | 4 | 5116 | 1% | /run/lock |
tmpfs | 4032920 | 0 | 4032920 | 0% | /sys/fs/cgroup |
/dev/sda1 | 262144 | 29812 | 232332 | 12% | /boot/efi |
tmpfs | 806588 | 68 | 806520 | 1% | /run/user/1000 |
若只要查看指定的分割區,可以在參數中以掛載點來指定:
# 指定掛載點
df /
檔案系統 | 1K-區段 | 已用 | 可用 | 已用% | 掛載點 |
---|---|---|---|---|---|
/dev/sda6 | 123198468 | 61874080 | 55043224 | 53% | / |
以容易閱讀的方式顯示磁碟用量
預設的 df 輸出會以 KB 為單位顯示磁碟用量,但是現在的硬碟容量都很大,這樣的輸出通常不好閱讀。
若加上 -h 參數之後,可以讓 df 指令以適合人閱讀的方式顯示磁碟用量:
# 以容易閱讀的方式顯示
df -h
檔案系統 | 容量 | 已用 | 可用 | 已用% | 掛載點 |
---|---|---|---|---|---|
udev | 3.9G | 0 | 3.9G | 0% | /dev |
tmpfs | 788M | 9.5M | 779M | 2% | /run |
/dev/sda6 | 118G | 60G | 53G | 53% | / |
tmpfs | 3.9G | 61M | 3.8G | 2% | /dev/shm |
tmpfs | 5.0M | 4.0K | 5.0M | 1% | /run/lock |
tmpfs | 3.9G | 0 | 3.9G | 0% | /sys/fs/cgroup |
/dev/sda1 | 256M | 30M | 227M | 12% | /boot/efi |
tmpfs | 788M | 76K | 788M | 1% | /run/user/1000 |
顯示檔案系統
若要查看各個磁碟分割區的檔案系統類型,可以加上 -T 參數:
# 顯示檔案系統
df -T
檔案系統 | 類型 | 1K-區段 | 已用 | 可用 | 已用% | 掛載點 |
---|---|---|---|---|---|---|
udev | devtmpfs | 4007432 | 0 | 4007432 | 0% | /dev |
tmpfs | tmpfs | 806588 | 9644 | 796944 | 2% /run | |
/dev/sda6 | ext4 | 123198468 | 61871980 | 55045324 | 53% | / |
tmpfs | tmpfs | 4032920 | 36008 | 3996912 | 1% | /dev/shm |
tmpfs | tmpfs | 5120 | 4 | 5116 | 1% | /run/lock |
tmpfs | tmpfs | 4032920 | 0 | 4032920 | 0% | /sys/fs/cgroup |
/dev/sda1 | vfat | 262144 | 29812 | 232332 | 12% | /boot/efi |
tmpfs | tmpfs | 806588 | 84 | 806504 | 1% | /run/user/1000 |
如果只想要查看特定的檔案系統,可以使用 -t 指定要查看的類型:
# 指定要顯示的檔案系統
df -t vfat
檔案系統 | 1K-區段 | 已用 | 可用 | 已用% | 掛載點 |
---|---|---|---|---|---|
/dev/sda1 | 262144 | 29812 | 232332 | 12% | /boot/efi |
若要排除特定的檔案系統,可以使用 -x 指定要排除的類型:
# 指定要顯示的檔案系統
df -x vfat
檔案系統 | 1K-區段 | 已用 | 可用 | 已用% | 掛載點 |
---|---|---|---|---|---|
udev | 4007432 | 0 | 4007432 | 0% | /dev |
tmpfs | 806588 | 17836 | 788752 | 3% | /run |
/dev/sda6 | 123198468 | 61875120 | 55042184 | 53% | / |
tmpfs | 4032920 | 34080 | 3998840 | 1% | /dev/shm |
tmpfs | 5120 | 4 | 5116 | 1% | /run/lock |
tmpfs | 4032920 | 0 | 4032920 | 0% | /sys/fs/cgroup |
tmpfs | 806588 | 84 | 806504 | 1% | /run/user/1000 |
僅顯示本機磁碟
若系統上同時有掛載遠端的檔案系統,在 df 的輸出中也會同時顯示出來。若只想顯示本機的硬碟狀況,可以加上 -l 參數:
# 僅顯示本機磁碟
df -l
檢查磁碟用量指令稿
對於時常需要檢查磁碟用量的管理者來說,通常會把這種例行性的檢查工作寫成指令稿,讓系統定期自動檢查。
在檢查磁碟用量的時候,重要的資訊只有磁碟以及用量百分比,我們可以用以下這行指令從 df 的指令中取出這兩項資訊:
# 篩選磁碟與用量
df -t ext4 -t vfat | awk '{ print $5 " " $1 }'
這裡我們使用 -t 參數只讓 df 輸出 ext4 與 vfat 兩種常見的檔案系統,然後使用 awk 輸出使用的百分比以及檔案系統欄位,輸出會類似這樣:
已用% | 檔案系統 |
---|---|
53% | /dev/sda6 |
12% | /dev/sda1 |
接著我們把第一行標題去除,然後放進迴圈中檢查,如果使用量大於門檻值的話,就發出警告訊息通知管理者: |
#!/bin/sh
df -t ext4 -t vfat | tail -n +2 | awk '{ print $5 " " $1 }' | while read output;
do
# 取出使用量(百分比)
usep=$(echo $output | awk '{ print $1}' | cut -d'%' -f1 )
# 檔案系統
partition=$(echo $output | awk '{ print $2 }' )
# 若用量大於 90% 則用 Email 發出警告訊息
if [ $usep -ge 90 ]; then
echo "Running out of space \"$partition ($usep%)\" on $(hostname) as on $(date)" |
mail -s "Alert: Almost out of disk space $usep%" [email protected]
fi
done
參考資料:Tecmint