如果我运行 iostat -x 1,我偶尔会看到 5MB 到 10MB 的大写入。
正在写入哪些文件?
例如,我想检查最近创建的大小超过 5MB 的文件。
我该怎么做呢?
答案1
在/path下查找X分钟内修改的文件
find /path -cmin -X
Sign before minute:
+ more than X minutes / over X minutes
- less than X minutes / within X minutes
(no sign) exact
示例:查找/var/log(包括子目录)中最近30分钟内修改的所有文件
find /var/log -cmin -30
在/path下查找X大小较大的文件
find /path -size +X<unit>
Sign before size:
+ larger than
- less than
(no sign) exact
<unit> :
b = block (default,512byte)
c = byte
w = word (2-byte)
k = kbyte
M = Mbyte
G = Gbyte
示例:查找/var/log(包括子目录)中所有大于50k的文件
find /var/log -size +50k
结合
示例:查找 /var/log(包括子目录)中最近 30 分钟内修改过的所有大于 50k 的文件
find /var/log -cmin -30 -size +50k
如果你想包括 50k在你的结果中,更改为
find /var/log -cmin -30 -size +49k
聚苯乙烯: 避免find / .....
这样做,因为不仅会花费很长时间,而且还包括一般不适合搜索的目录(/dev、/sys、/proc、...)。
答案2
您find
必须主动搜索文件系统上的文件并信任它们的时间戳。
最近的 Linux 系统上的替代方案是inotify。在这种情况下,内核会监视文件系统发生的更改,您可以使用例如inotifywait -m
.这应该可以让您很好地了解实时发生的情况。
当递归监视大型目录树时,inotify 方法效果不佳。在这种情况下,find
您将了解要监视哪些目录。