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)