V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
kisshere
V2EX  ›  程序员

Linux 根文件夹满了,但找不到根源问题在哪?

  •  
  •   kisshere · Dec 27, 2022 · 5302 views
    This topic created in 1229 days ago, the information mentioned may be changed or developed.
    cd /
    df -h
    
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/md2         25G   24G     0 100% /
    

    但是根文件夹下显示所有文件夹(比如 usr 、var 、tmp 等文件夹)大小之和为 10G ,根本没用到 24G

    删了一个 2G 的日志文件,有趣的来了,根文件夹所有文件夹大小之和变为 8G ,Avail 立马变为 2G ,然后 1.8G ,1.6G ,1.5G......不断缩小,直至为 0 。但根文件夹所有大小之和还是 8G

    这是怎么造成的?怎么排查?

    43 replies    2022-12-29 12:00:54 +08:00
    angryPHP
        1
    angryPHP  
       Dec 27, 2022
    du 命令
    kisshere
        2
    kisshere  
    OP
       Dec 27, 2022 via Android
    @angryPHP 命令全部?怎么排查?
    yinheli
        3
    yinheli  
       Dec 27, 2022   ❤️ 1
    lsof -nP | grep 'deleted'
    yinheli
        4
    yinheli  
       Dec 27, 2022
    看看有没有删掉的,但是句柄还在的文件
    MilkShake
        5
    MilkShake  
       Dec 27, 2022
    用 du 命令 从根目录开始往下找到是那个目录占用最大。
    chrawsl
        6
    chrawsl  
       Dec 27, 2022
    du / -h -d1

    -d1 代表递归深度
    47jm9ozp
        7
    47jm9ozp  
       Dec 27, 2022   ❤️ 2
    ncdu
    kisshere
        8
    kisshere  
    OP
       Dec 27, 2022
    @aaa5838769
    @chrawsl 我把根目录下面所有文件夹都计算过了的,总共只占用了 8G ,但是还是显示 Used 是 24G
    idblife
        9
    idblife  
       Dec 27, 2022
    yum install ncdu
    不用谢
    zzfra
        10
    zzfra  
       Dec 27, 2022
    我不负责地猜测一下,docker 导致的问题
    AoEiuV020CN
        11
    AoEiuV020CN  
       Dec 27, 2022
    发现 Avail 在变小就应该马上切 u 盘系统再考虑怎么排查,
    css3
        12
    css3  
       Dec 27, 2022
    看下回收站是否清空
    nbweb
        13
    nbweb  
       Dec 27, 2022 via Android
    先把 md2 umount 了再看看容量。
    troilus
        14
    troilus  
       Dec 27, 2022
    大概率是 docker ,前几天同样问题
    lerry
        15
    lerry  
       Dec 27, 2022
    @yinheli #4 我遇到过,重启后好了
    Dragonish3600
        16
    Dragonish3600  
       Dec 27, 2022 via iPhone
    reboot first
    xyjincan
        17
    xyjincan  
       Dec 27, 2022
    删除没有关闭的文件,重启系统 or 进程就好了

    建议使用 echo > xxx.log 删除日志文件
    defunct9
        18
    defunct9  
       Dec 27, 2022
    lsof +L1
    villivateur
        19
    villivateur  
       Dec 27, 2022   ❤️ 8
    @defunct9 这次居然没让开 ssh ?
    dd991
        20
    dd991  
       Dec 27, 2022
    temp 文件夹
    limbo0
        21
    limbo0  
       Dec 27, 2022
    du -sh -- * | sort -rh
    Jirajine
        22
    Jirajine  
       Dec 27, 2022
    下个 gdu 看看
    gamexg
        23
    gamexg  
       Dec 27, 2022
    linux 下正在打开的文件也可以删除,但是这个删除只是 ls 不显示,实际这个文件还是存在,并且占用空间。直到使用这个文件程序释放这个文件,文件才被真的删除,空间才会被释放。

    所以最简单的办法,重启下再看空间占用。
    labnotok
        24
    labnotok  
       Dec 27, 2022 via Android
    ncdu -x
    McreeWu
        25
    McreeWu  
       Dec 27, 2022
    一般是 deleted 文件导致的,如果找不到的话可以看看磁盘预留空间
    datadump
        26
    datadump  
       Dec 27, 2022
    github search: ncdu
    V2April
        27
    V2April  
       Dec 27, 2022
    我遇到过一次这个,是 onlyoffice 的日志文件
    stephenyin
        28
    stephenyin  
       Dec 27, 2022
    找 /home/xxx 下大于 500M 的文件:find /home/xxx -size +500m -name -type f
    stephenyin
        29
    stephenyin  
       Dec 27, 2022
    @stephenyin #28 find /home/xxx -size +500m -type f
    stephenyin
        30
    stephenyin  
       Dec 27, 2022
    @stephenyin #29 🤣 find /home/xxx -size +500M -type f
    DingJZ
        31
    DingJZ  
       Dec 27, 2022
    遇到过一次 Inodes 的问题,df -i 查看 Inodes 占用,如果是的话清 /tmp
    julyclyde
        32
    julyclyde  
       Dec 27, 2022
    这么经典的故障

    丢失的空间可能都是类似于你“删除了一个日志”这类操作导致的
    pingpp00
        33
    pingpp00  
       Dec 27, 2022
    在根目录下执行 du -shx * ,然后依次排查
    QKgf555H87Fp0cth
        34
    QKgf555H87Fp0cth  
       Dec 27, 2022
    sudo du -hsx * | sort -rh
    ntdll
        35
    ntdll  
       Dec 27, 2022
    是某个应用占用了个大文件,但是你已经通过 rm 把这个文件删掉,同时程序并未释放此文件的句柄,所以会造成你这种情况。因为句柄被占用,文件在内核中并未真正释放。

    如果记得是哪个程序占用的大文件,重启这个程序即可。
    如果不记得是哪个程序,重启系统即可。
    JohnBull
        36
    JohnBull  
       Dec 27, 2022
    肯定是有个超大的匿名文件
    zooo
        37
    zooo  
       Dec 27, 2022
    ncdu 确实好用些
    lelandsu
        38
    lelandsu  
       Dec 27, 2022 via iPhone
    ncdu -x /
    还找不到问题再来讨论
    xwayway
        39
    xwayway  
       Dec 28, 2022
    楼上各位大哥说得都很在理,我就想蹲一个结果
    mylara
        40
    mylara  
       Dec 28, 2022
    @lelandsu 这样应该直接就解决了,哈哈哈
    ninvfeng
        41
    ninvfeng  
    PRO
       Dec 28, 2022
    1. 执行 du -sh / 看看哪个文件夹最大
    2. 然后进最大的文件夹执行 du -sh ./*
    重复执行第二步就能找到最大的文件在哪
    如果删除后空间没释放就重启一下对应的程序
    julyclyde
        42
    julyclyde  
       Dec 29, 2022
    @ninvfeng2020 你这个和 OP 错的一样啊
    zhuanggu
        43
    zhuanggu  
       Dec 29, 2022
    不是文件夹大啊,而是根目录下有隐藏文件。ls -a
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2747 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 96ms · UTC 15:36 · PVG 23:36 · LAX 08:36 · JFK 11:36
    ♥ Do have faith in what you're doing.