TShopping

標題: Ubuntu 怎樣才能找到占用空間的檔案目錄? [打印本頁]

作者: woff    時間: 2022-6-25 15:10
標題: Ubuntu 怎樣才能找到占用空間的檔案目錄?
問題描述
我在我的一台運行20.04的ubuntu服務器上遇到問題:沒有剩餘磁盤空間。
我不知道占用空間的是什麽。是否有一個命令列出當前目錄的大小,所以我可以遍曆並最終占用占用所有空間的目錄?

最佳解決方案
和Linux一樣,完成工作的方法不止一種。但是,如果您需要從CLI執行此操作,這是我首選的方法:
我首先以root用戶或sudo運行它:
  1. du -cha --max-depth=1 / | grep -E "M|G"
複製代碼


grep是將返回的行限製為返回值為兆字節或千兆字節範圍的行。如果您的磁盤足夠大,您可以添加|T以包含太字節數量。您可能會在/proc,/sys和/或/dev上遇到一些錯誤,因為它們不是磁盤上的真實文件。但是,它仍應為root中的其餘目錄提供有效輸出。在找到最大的那個之後,你可以在該目錄中運行命令,以便縮小你的道路。因此,例如,如果/var是最大的,你可以這樣做下一個:
  1. du -cha --max-depth=1 /var | grep -E "M|G"
複製代碼


這應該引導你解決問題!
其他考慮因素
雖然上麵的命令肯定會起到作用,但我在下麵的評論中有一些建設性的批評指出了你可以包括的一些事情。

次佳解決方案
您可以使用ncdu。它工作得很好。
  1. sudo apt install ncdu
複製代碼


第三種解決方案
我用這個命令
  1. sudo du -aBM -d 1 . | sort -nr | head -20
複製代碼

偶爾,我需要從/目錄運行它,因為我已經在奇怪的位置放置了一些東西。

第四種方案
關於如何找到占據大部分空間的目錄,已經有很多很好的答案。如果你有理由相信很少有大文件是主要問題,而不是很多小文件,你可以使用像
  1. find / -size +10M
複製代碼

這樣的東西。

第五種方案
我不知道Ubuntu並且無法檢查我的答案但是根據我很久以前作為unix管理員的經驗在這裏發布我的答案。
但是如果du輸出大約不是df顯示的可用空間會發生什麽?
如果du輸出較大,那麽您錯過了安裝另一個文件係統的子目錄。如果du輸出小得多,則som文件不會顯示在任何目錄中。他的現象可能有不同的原因。
除了使用du命令的這種係統方式之外,您還可以使用其他一些方法。因此,您可以使用find命令查找比您提供的值大的文件,您可以搜索大於您提供的某個值或新創建的文件或具有特殊名稱的文件(例如* .log,core,*帶.trc)。但是你總是應該按照1中的描述做一個df,這樣你才能使用正確的文件係統

第六種方案
如果您還對不使用命令感興趣,可以使用以下應用程序:Filelight
它可以讓您快速查看任何文件夾中使用磁盤空間的內容。


第七種方案
如果尚未執行此操作,請嘗試使用sudo apt-get autoremove刪除未使用的文件

第八種方案(找目錄總容量)
我經常使用這個
  1. du -sh /*/
複製代碼

或是切到該目錄執行(馬上找到該目錄佔據多少容量)
  1. du -h --exclude=virtfs --max-depth=1 | egrep 'G|T'
複製代碼

然後,如果我找到一些大文件夾,我會切換到它並進行進一步調查
  1. cd big_dirdu -sh */
複製代碼

如果需要,您也可以自動排序
  1. du -s /*/ | sort -n
複製代碼

第九種方案
不是一個真正的答案 – 而是一個附錄。
你的空間很難,無法從@erman的回答中安裝ncdu。
一些建議
那個人可能會返回這樣的行:
  1. lsof | grep deleted
  2. init          1          root    9r      REG              253,0  10406312       3104 /var/lib/sss/mc/initgro                        ups (deleted)
  3. salt-mini  4532          root    0r      REG              253,0        17     393614 /tmp/sh-thd-1492991421                         (deleted)
複製代碼

初始化行無法做太多,但第二行建議salt-minion打開一個已刪除的文件,一旦服務重啟關閉了所有文件句柄,就會返回磁盤塊。
這裏的其他常見嫌疑人將包括syslog /rsyslog /syslog-ng,squid,apache或您的服務器運行的任何“重”的進程。

第十種方案
我發現像Filelight這樣的工具的輸出特別有價值,但是,在您的情況下,在服務器上通常沒有安裝GUI,但du命令始終可用。
我通常做的是:
免責聲明:我寫過dufs – 正是因為我經常要找出無頭機器上的什麽占用磁盤空間。

參考文章






歡迎光臨 TShopping (http://www.tshopping.com.tw/) Powered by Discuz! X3.2