当执行linux rm命令删除一个打开的文件时,如何恢复磁盘空间?

当执行linux rm命令删除一个打开的文件时,如何恢复磁盘空间?

linux下当执行rm命令删除一个正在打开的文件,然后关机并重启机器,如何恢复磁盘空间?

答案1

它是自动的。只有打开的文件会保留在磁盘中,直到它们被关闭(并且重新启动将强制关闭程序,因此系统会关闭该文件)。

fschk如果系统突然停止(断电),a将释放磁盘空间。注意:带有日志和其他文件系统将自动执行此操作。

答案2

在正在运行的系统上,您需要关闭锁定文件的进程。它将标记要删除的文件所使用的空间为可用空间。

你可以使用以下命令找到锁定已删除文件的进程的 PID:lsof -nP | grep '(deleted)'

一旦获得了PID列表,您就可以尝试关闭相应的程序或者将其杀死。

答案3

您可以简单地用空内容覆盖已删除的文件数据。

步骤 1:确定占用磁盘空间的进程

这里是 PID 7995

步骤 2:识别指向已删除文件的文件描述符,此处为 fd #13

$ lsof -p 7995 | grep deleted
ksh     7995 jlliagre   13w   REG  252,0    353831  72794942 /tmp/foo1 (deleted)

步骤 3:将空命令重定向到它

$ : > /proc/7995/fd/13

步骤 4:验证空间是否已恢复:

 $ lsof -p 7995 | grep deleted
ksh     7995 jlliagre   13w   REG  252,0         0  72794942 /tmp/foo1 (deleted)

相关内容