Linux檢視磁碟資訊(編寫shell指令碼來分析檔案的佔用情況)
今天筆記本不停的提示我空間不足空間不足。於是在圖形化介面下看了一下磁碟的使用情況,居然使用率99%。(當初換固態硬碟的為了圖便宜換了258G,覺得差不多夠用了,現在崩盤了)一直覺得沒給固態中放什麼大檔案,還是空間不足了很好奇是什麼目錄佔了大量的空間。就Google了一堆資料來學習如何檢視磁碟的資訊的命令,最後得到了自己想要的結果(tomcat 的logs佔了120G)。現將查到的資料記錄一下。
涉及到Linux磁碟資訊或者檔案的磁碟佔用情況。主要涉及到兩個命令: df du
du檢視目錄大小
df檢視磁碟使用情況
一.du使用說明
du的英文為:disk usage,含義是磁碟空間使用情況,功能是逐級進入指定目錄的每一個子目錄並顯示該目錄佔用檔案系統資料塊的情況,如果沒有指定目錄,則對當前的目錄進行統計。
du的命令各個選項含義如下:
- a:顯示全部目錄和其次目錄下的每個檔案所佔的磁碟空間
- s:只顯示各檔案大小的總合
- b:大小用bytes來表示
- x:跳過在不同檔案系統上的目錄不予統計
- c: 表示最後計算出所列目錄的大小之和。
- …
使用示例:
1.檢視某個目錄的大小:du -hs xxxxxx
2.檢視目錄下所有目錄的大小並按大小降序排列:du -sm /etc/* | sort -nr | less
3.檢視當前目錄下所有檔案或資料夾佔用空間:du -h –max-depth=1
引數說明:-h是使輸出結果更易於人類閱讀(使用K,M,G的人性化形式顯示);du -s只展示目錄的使用總量(不分別展示各個子目錄情況),-m是以MB為單位展示目錄的大小
二.df使用說明
於du不同的是,du是面向檔案的命令,只計算被檔案佔用的空間。不計算檔案系統metadata 佔用的空間。df則是基於檔案系統總體來計算,通過檔案系統中未分配空間來確定系統中已經分配空間的大小。df命令可以獲取硬碟佔用了多少空間,還剩下多少空間,它也可以顯示所有檔案系統對i節點和磁碟塊的使用情況。
df命令各個選擇的含義如下:
- a:顯示全部的檔案系統和各分割區的磁碟使用情形
- i:顯示i -nodes的使用量
- k:大小用k來表示 (預設值)
- t:顯示某一個檔案系統的所有分割區磁碟使用量
- x:顯示不是某一個檔案系統的所有分割區磁碟使用量
- T:顯示每個分割區所屬的檔案系統名稱
- ….
現在根據以上學習的命令和命令的引數來編寫shell指令碼以備下次磁碟再次崩盤的情況下使用。
#!/bin/bash
if [ $# == 0 ]
then
du -am --max-depth=1 | sort -nr
else
du -am --max-depth=1 $1 | sort -nr
fi
~