获取 Filesys::DiskFree 的更新值
Getting updated values for Filesys::DiskFree
所以我正在编写一个脚本,当可用磁盘 space 低于一定百分比时删除一些旧备份。
# 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() 以查看是否会清除陈旧数据。
有可能系统在应用程序终止之前不会释放磁盘space。与生成大型日志文件的长 运行 应用程序非常相似,删除文件会将其删除,但 space 直到应用程序重新加载后才会被释放。尝试 lsof | grep deleted
...您可能会看到您的文件仍然在列表中,如果是这样并且在应用程序终止后它们就消失了,这就是问题所在。
所以我正在编写一个脚本,当可用磁盘 space 低于一定百分比时删除一些旧备份。
# 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() 以查看是否会清除陈旧数据。
有可能系统在应用程序终止之前不会释放磁盘space。与生成大型日志文件的长 运行 应用程序非常相似,删除文件会将其删除,但 space 直到应用程序重新加载后才会被释放。尝试 lsof | grep deleted
...您可能会看到您的文件仍然在列表中,如果是这样并且在应用程序终止后它们就消失了,这就是问题所在。