本篇介紹如何在 Linux 系統中使用 df
指令檢查磁碟的使用量與剩餘空間,並提供自動檢查磁碟空間的指令稿範例。
對於 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%" you@somewhere.com fi done
參考資料:Tecmint