du指令 (掃描目錄結構)
-a | 顯示目錄中個別檔案的大小
-b | 以bytes為單位顯示
-c | 顯示個別檔案大小與總和
-D | 顯示符號鏈結的來源檔大小
-h | Human readable
-H | 與-h類似, 但是以1000為k的單位而非1024 bytes為區塊的單位
-l | 重複計算鏈結黨所占空間
-L 符號鏈結 | 指定符號鏈結檔的大小
-m | 以 MB 為顯示單位
-s | 只顯示總和
-S | 顯示目錄內容時, 不包含子目錄大小.
-x | 若目錄中有不同的檔案系統, 不顯示相異的檔案系統
--exclude | 忽略指定的檔案或目錄
--max-depth | 僅搜尋指定的目錄層級
df指令 (從檔案系統獲取空間資訊)
-a : 列出所有的檔案系統,包含系統持有的 /proc 等檔案系統。
-k : 以 KB 的格式顯示。
-m : 以 MB 的格式顯示。
-h : 自動以 GB, MB, KB 等格式顯示。
-H : 以 M=1000K 取代 M=1024K。
-T : 顯示檔案系統類型。
-i : 以 inode 的數量顯示。
-t : 只印出指定 <類型> 的檔案系統資訊
sort指令
-n –number-sort 依字串數值排序,與-g區別為不轉為浮點數
-g –general-number-sort 按通用評分排序,支援科學計數法
-f –ignore-case 忽略大小寫,預設大小寫字母不同
-k –key=POS1[,POS2] 排序從POS1開始,若指定POS2,則POS2結束,否則以pos1排序
-t –field-separator=SEP 指定列的分割符
-r –反向降序排序,預設為升序
-h – human-numeric-sort 使用易讀性數字(例如: 2K 1G)
-u –unique 去掉重複的行
-o –output=FILE 將輸出寫入文件
看目前資料夾的前十筆資料
du -hs * | sort -hr| head -n 10
詳解:
1. du 指令,取得目前資料夾下所有檔案與資料夾的訊息,轉換成易讀的檔案大小資訊並只顯示當前資料夾所看的到的檔案或該層的資料夾(不會顯示下層資料夾)
2. 將第一點的資料丟到sort指令,並根據剛剛所使用的 -h 得到的檔案大小排序,且降序排序
3. 取最先出現的10筆來顯示
du -shc .
詳解:
指定一個資料夾,看佔多少容量
看整台機器的硬碟狀態
df -h
詳解:
以容易看懂的容量資訊顯示所有掛載的硬碟資訊
df -h| awk '{ print $4 " "$5 " " $1 }'
詳解:
df 取得資訊後,使用 awk 輸出 Avail Use% Filesystem 這三個資訊
可以寫shellscript來偵測機器是否超過目標值
#!/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
參考資料:
https://blog.csdn.net/shuanghujushi/article/details/51344215
https://hackmd.io/@tienyulin/linux-disk-management
https://blog.gtwang.org/linux/linux-df-command-check-disk-space-usage-tutorial-script-example/