所以当我可用的磁盘空间低于一定百分比时,我正在编写脚本来删除一些旧备份。
# get disk info
$handle = Filesys::DiskFree->new();
$handle->df();
$available = $handle->avail("$dir");
$used = $handle->used("$dir");
$total = $handle->total("$dir");
$used_p = ($used / $total) * 100.0;
print "$used_p\n";
print "$used\n";
# find files to delete
# --- special sauce code to find @files
# delete files
unlink @files;
# get new disk info
$handle = Filesys::DiskFree->new();
$handle->df();
$available = $handle->avail("$dir");
$used = $handle->used("$dir");
$used_p = ($used / $total) * 100.0;
print "$used_p\n";
print "$used\n";
我的想法是第二次使用Filesys :: DiskFree我会得到新的df值,这些值应该反映删除的文件。但是,并没有给我我期望的价值。不完全相同,但差异并不像我预期的那么多。但是,第二次运行它时,我可以看到初始打印反映了上次运行时被删除的文件。好像有某种延迟。如上所示,我尝试再次调用new()以查看是否可以清除陈旧数据。
答案 0 :(得分:1)
在应用程序终止之前,系统可能无法释放磁盘空间。就像生成大型日志文件的长时间运行的应用程序一样,删除文件会将其删除,但在重新加载应用程序之前,空间不会被释放。尝试lsof | grep deleted
...您可能会看到您的文件仍然列出,如果是这样,并且在应用终止后它们就消失了,这就是问题所在。