Linux
Linux 磁碟空間
我一直在環顧四周,發現您可以使用
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"}'
為了回答您有關獲取資訊的其他方式的問題,coreutils
stat
能夠使用 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
。