我有一个系统不断耗尽磁盘空间。 我要写一个脚本,清理更大的目录。 通常这些是日志目录。 鉴于机器的性质,我不需要保持日志。
我想写一个脚本,显示所有的大小增加的目录,所以我可以确保这个列表为0。
我在想这样的事情
1. du / 2. wait 24 hrs 3. du / 4. find all instances where the file size increased
它看起来很简单,但我的问题是,杜对文件和目录工作,你不能做只有目录。 我怎样才能克服呢?
你可以使用find来告诉24小时内被修改了什么,
find / -type d name \* -mtime 1 -print
应该列出在过去24小时内发生变化的所有目录,但要切实记住其文件的变化而不是目录。
另一种方法是做
du -s * | sort > currentsize
这个按照目录进行总结,然后将文件存储在起始位置,但是,您可以每天存储它,将该文件移动到旧的大小,再次运行命令
然后
差异currentizeize旧尺寸
你可以看到有什么改变。
你可以用awk来决定一个是大还是小。
所有系统日志往往也改变。
但是我说的最初的发现显示你在过去的24小时内修改过的文件。 你也可以使用基于此的东西。
如果你的问题是日志文件,我可以build议使用logrotate吗?
它具有定期“归零”日志文件,归档和/或删除旧日志等function。 甚至在做出魔术之前停止相关的守护进程(如果守护进程保持日志文件打开,可能是必要的)。
这不是非常有效,但你可以做这样的事情:
find / -type d -print0 | xargs -0 du -s
假设你正在试图find/下的增长目录,你可以试试:
du -s /*/
这将输出每个目录下(/和只有目录)的总结个人大小。
如前所述,使用logrotate来pipe理日志文件的旋转和清理。 它可以压缩旧的日志,并在X世代后删除最旧的日志。
我通常使用命令du -s * | sort -n使用最大的目录来search空间 du -s * | sort -n 这使我能够快速find目录和文件清理将产生重大影响。
如果您正在使用munin来监视磁盘使用情况,则可以对其进行configuration以在使用率较高时进行通知。 80%和90%是警告和重要信息的良好起点。
您定期运行查找来查找大于某个阈值的文件。 如果你有很多较大的文件,这将无济于事,但会检测到文件增长过大。