Process
找出哪個程序在硬碟驅動器上打開了在目錄樹中不再可見的數據
在我的伺服器上,根分區為 73GB,但磁碟顯示已滿,儘管該設備上僅使用了大約 6GB:
# df -h Filesystem Size Used Avail Use% Mounted on udev 997M 0 997M 0% /dev tmpfs 202M 41M 162M 20% /run /dev/mapper/p22server-root 73G 68G 655M 100% /
(我在伺服器上使用 LVM:)
/dev/mapper/p22server-root -> ../dm-0
如果我檢查ncdu -x /
我發現總使用量只有 5.9GB。
我的猜測是,必須有文件仍然打開,在文件樹中不可見。
我該如何調試呢?我想,重新啟動將恢復失去的空間,但現在無法重新啟動。
有兩種可能:
- 某些程序仍然打開已刪除的文件
您可以使用 . 查看所有打開的文件
lsof
。例如,這些是顯示的類型lsof
以及它們在輸出中出現的頻率:# lsof|cut -c50-54|sort|uniq -c 375 CHR 610 DIR 211 FIFO 32 IPv4 17 IPv6 40 link 419 node 152 nown 6008 REG 9 sock 598 unix
這僅顯示文件描述符列 (FD):
# lsof|awk -v field="FD" 'NR==1 {c = index($0,field)} {print substr($0,c-1,length(field)+4)}'|sort|uniq -c|sort -n|tail
DEL
在 的輸出中查找具有該值的文件lsof
以獲取提示。2.文件隱藏在掛載點後面
但更有可能的是,這些文件只是由於掛載點而“隱藏”了,當大量文件儲存在掛載文件夾中時沒有使用該掛載點,現在它們對
ncdu
.將根目錄掛載到另一個位置並分析:
mkdir /temp-root mount --bind / /temp-root ncdu -x /temp_root
如果您的懷疑屬實,您可能會更輕鬆地使用lsof。
在輸出中查找“(已刪除)”或類似內容。