我正在编写一个小脚本,如果缓存目录过大,每天通过CRON在我的Linux上清理空间。由于我在Bash脚本方面还很菜,因此我需要一些来自您这些Linux专家的帮助。
下面是基本逻辑(伪代码):
if ( Drive Space Left < 5GB )
{
change directory to '/home/user/lotsa_cache_files/'
if ( current working directory = '/home/user/lotsa_cache_files/')
{
delete files in /home/user/lotsa_cache_files/
}
}
获取剩余磁盘空间
我计划通过 "/dev/sda5" 命令获取磁盘的剩余空间。 它将返回以下值供您参考:
Filesystem 1K-blocks Used Available Use% Mounted on<br>
/dev/sda5 225981844 202987200 11330252 95% /
可能需要一点正则表达式才能从返回值中获取“11330252”
有点偏执
“if(当前工作目录= / home / user / lotsa_cache_files /)”部分只是我内心的防御机制。在继续使用删除命令之前,我想确保我确实处于“/home/user/lotsa_cache_files/”中,因为如果当前工作目录不在那里,这个命令可能会造成破坏性的影响。
删除文件
删除文件将使用以下命令而不是通常的rm -f:
find . -name "*" -print | xargs rm
由于Linux系统固有的缺陷,如果一个目录包含过多文件,就无法使用“rm”命令删除该目录,这是我过去所学到的。