当一个目录下有大量(enormous) 的文件时, 而且磁盘io性能又很差时, 该如何查看该目录下的文件?

2013-11-18 10:59:01 +08:00
 mantianyu
现在我只要一进这个目录, 系统就会卡死...

还有一个怪异的事, 就是在这个目录上一层执行 ls -lFh, 似乎可以直接看到这个目录的总大小
http://uploadpie.com/hAFk6

别的目录都是显示这个目录文件的大小, 只有 php5 这个目录显示的似乎是总大小

我可以确定 php5 这个目录下有大量的文件...(应该是 session)

该怎么优雅的查看它下面的文件呢?
2344 次点击
所在节点    问与答
10 条回复
mantianyu
2013-11-18 11:28:57 +08:00
为啥不能编辑了呢.... 补个图, 这个图和上面链接的图是一个

megaforce
2013-11-18 11:46:30 +08:00
文件很多的时候,我一般都是用Find
find php5 -type f -exec ls -l {} \;
zorceta
2013-11-18 12:46:25 +08:00
底层IO,直接查inodes(是这么说吗?反正是直接翻底层的文件列表
rrfeng
2013-11-18 14:07:07 +08:00
@mantianyu
@megaforce

进入目录就死?这个倒不清楚。但是 目录大小超过 4k 说明里面的文件实在是很多很多很多了……


但是大量文件 ls 卡死的原因一般只有一个,那就是 ls 默认是排序的

试试 ls -U



find 的话直接 -print 就行了,别 exec 了
msg7086
2013-11-18 15:55:11 +08:00
> 别的目录都是显示这个目录文件的大小, 只有 php5 这个目录显示的似乎是总大小

很可惜,不是。这个同样显示的是目录inode的大小,也就是里面的条目数多到这个inode本身就有69M了

卡死我觉得挺正常的,因为我以前遇到过类似的事情,后来直接新建了一个目录换掉了原来的,然后用rm -rf慢慢删了很久才把文件删光。

PS: 69M的目录文件,最起码文件数有个50万了吧
mantianyu
2013-11-18 16:08:40 +08:00
@rrfeng

@megaforce

果然耶, 原来还有 ls -U 这种用法, 这下真是长姿势了...

find php5 -type f -exec ls -l {} \;
find php5 -type f -print
这两个都能工作不会导致卡死, 试验了下 发现上面两条命令中, find 也是不排序的
不过似乎又有点说不通 find php5 -type f -exec ls -l {} \; 为什么也正常...算了先不考虑了..
mantianyu
2013-11-18 16:10:11 +08:00
@zorceta 好高深啊, 该怎么做呢?
rrfeng
2013-11-18 16:28:39 +08:00
@mantianyu
因为 find 的 exec ls 是 find 输出一条,ls 执行一条
mantianyu
2013-11-18 16:40:47 +08:00
@msg7086 多谢! 我最后也 rm -rf 把里面的文件清空了, 没想到 session 竟然如此疯长, 具体多少文件也没数, 我机器是 Inode Size 是 256 字节, 这么算来似乎是 28w 左右的文件...
zorceta
2013-11-18 17:53:14 +08:00
@mantianyu 我就是班门弄斧......别理我0 0

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/89660

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX