2021年6月28日 星期一

【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

沒有留言:

張貼留言