Linux

Linux 磁碟空間

  • November 19, 2017

我一直在環顧四周,發現您可以使用df -hT. 所以我確實使用它來獲取磁碟空間(總共)以及剩餘多少。但問題是,我想知道是否有其他方法可以獲取資訊?如您所見,我在此處複製的程式碼將使用 awk 提供以 GB 為單位的總磁碟空間(我最後添加了 B),也可以使用 awk 將其剪切。

這對你們中的一些人來說可能太麻煩了(我還在學習 bash),所以如果你有任何建議,請隨時給我。請記住,我正在尋找適用於每台伺服器/機器的選項,而無需使用 apt-get 下載軟體。

df -hT /home | awk '{print $3}' | awk 'FNR == 2 {print $1 "\B"}'
awk: cmd. line:1: warning: escape sequence `\B' treated as plain `B'
912GB

也不知道如何擺脫 awk 消息。這可能看起來有點奇怪,但我必須從某個地方開始!

刪除反斜杠對我有用:

df -hT /home | awk '{print $3}' | awk 'FNR == 2 {print $1 "B"}'

並且可以簡化為

df -hT /home | awk 'FNR == 2 {print $3 "B"}'

為了回答您有關獲取資訊的其他方式的問題,coreutilsstat能夠使用 option 查詢文件系統資訊(底層系統呼叫是statfs-f。這可以提供比 plain 更細粒度的資訊df。例如(有關格式說明符的完整列表,請參見 stat 手冊頁):

$ stat -f /tmp --printf='{"block-size": %S, "total-blocks": %b, "free-blocks-users": %a, "free-blocks-root": %f}\n'
{"block-size": 4096, "total-blocks": 7559140, "free-blocks-users": 1693162, "free-blocks-root": 2077148}

一個可能更相關的範例,這將以塊為單位列印文件系統大小:

$ stat -f /tmp --printf '%b\n'
7559140

或者,要計算字節,乘以塊大小(這裡,使用 GNU dc 進行數值計算):

$ stat -f /tmp --printf '%S %b *p' | dc
30962237440

或者,用兩位小數計算大小(以千兆字節為單位)並附加字元串“GB”:

$ stat -f /tmp --printf '%S %b * 2k 1024 dd**/n [GB]p' | dc
28.83GB

根據您希望用於此任務的程式語言,可能會使用直接包裝器statfs

引用自:https://unix.stackexchange.com/questions/398006