Linux
如何回收“已刪除”但仍在 Linux 上使用的文件的儲存?
SERVER:~ # df -mP /home/ Filesystem 1048576-blocks Used Available Capacity Mounted on /dev/mapper/rootvg-home_lv 496 491 0 100% /home SERVER:~ # SERVER:/home # lsof | grep -i deleted | grep -i "home" | grep home badprocess 4315 root 135u REG 253,2 133525523 61982 /home/username/tr5J6fRJ (deleted) badprocess2 44654 root 133u REG 253,2 144352676 61983 /home/username/rr2sxv4L (deleted) ... SERVER:/home #
文件仍在使用時被刪除。所以他們仍然會消耗空間。但是我們不想重新啟動“badprocess*”。作業系統是 SLES9,但我們“一般”地問這個問題。
**問題:**我們如何在不重新啟動保存它們的程序的情況下刪除這些已刪除的文件,從而釋放空間?
您可以使用 中的條目
/proc
截斷此類文件。# ls -l /proc/4315/fd
這將顯示由程序 4315 打開的所有文件。您已經使用過
lsof
,這表明已刪除的文件是文件描述符 135,因此您可以釋放該已刪除文件使用的空間,如下所示:# > /proc/4315/fd/135
程序 44654 打開的另一個已刪除文件也是如此,它的文件描述符為 133,因此:
# > /proc/44654/fd/133
您現在應該看到空間已釋放。
您還可以使用它來複製已被刪除但仍由程序保持打開的文件的內容,只需
cp /proc/XXX/fd/YY /some/other/place/filename
.