V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
mantianyu
V2EX  ›  问与答

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

  •  
  •   mantianyu · 2013-11-18 10:59:01 +08:00 · 2347 次点击
    这是一个创建于 4032 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在我只要一进这个目录, 系统就会卡死...

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

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

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

    该怎么优雅的查看它下面的文件呢?
    10 条回复    1970-01-01 08:00:00 +08:00
    mantianyu
        1
    mantianyu  
    OP
       2013-11-18 11:28:57 +08:00
    为啥不能编辑了呢.... 补个图, 这个图和上面链接的图是一个

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

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


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

    试试 ls -U



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

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

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

    PS: 69M的目录文件,最起码文件数有个50万了吧
    mantianyu
        6
    mantianyu  
    OP
       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
        7
    mantianyu  
    OP
       2013-11-18 16:10:11 +08:00
    @zorceta 好高深啊, 该怎么做呢?
    rrfeng
        8
    rrfeng  
       2013-11-18 16:28:39 +08:00
    @mantianyu
    因为 find 的 exec ls 是 find 输出一条,ls 执行一条
    mantianyu
        9
    mantianyu  
    OP
       2013-11-18 16:40:47 +08:00
    @msg7086 多谢! 我最后也 rm -rf 把里面的文件清空了, 没想到 session 竟然如此疯长, 具体多少文件也没数, 我机器是 Inode Size 是 256 字节, 这么算来似乎是 28w 左右的文件...
    zorceta
        10
    zorceta  
       2013-11-18 17:53:14 +08:00
    @mantianyu 我就是班门弄斧......别理我0 0
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1148 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 22:57 · PVG 06:57 · LAX 14:57 · JFK 17:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.