【发布时间】:2021-04-28 15:55:43
【问题描述】:
如果缓存目录变得太大,我每天都会通过 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 ( current working directory = /home/user/lotsa_cache_files/)' 部分只是我内心的偏执狂的一种防御机制。在继续执行删除命令之前,我想确保我确实在“/home/user/lotsa_cache_files/”中,如果当前工作目录由于某种原因不存在,则可能具有破坏性。
删除文件
文件的删除将使用下面的命令来完成,而不是通常的 rm -f:
find . -name "*" -print | xargs rm
这是由于 linux 系统固有地无法在目录包含太多文件时“管理”一个目录,正如我过去所了解的那样。
【问题讨论】:
-
"如果目录包含太多文件,Linux 系统固有地无法 'rm' 一个目录" 这是否也意味着 "rm -rf"?