• 请不要在回答技术问题时复制粘贴 AI 生成的内容
kisshere
V2EX  ›  程序员

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

  •  
  •   kisshere · Dec 27, 2022 · 5983 views
    This topic created in 1414 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
    angryPHP
    Dec 27, 2022
    1
    du 命令
    kisshere
    kisshere
    OP
    Dec 27, 2022 via Android
    2
    @angryPHP 命令全部?怎么排查?
    yinheli
    yinheli
    Dec 27, 2022❤️1
    3
    lsof -nP | grep 'deleted'
    yinheli
    yinheli
    Dec 27, 2022
    4
    看看有没有删掉的,但是句柄还在的文件
    MilkShake
    MilkShake
    Dec 27, 2022
    5
    用 du 命令 从根目录开始往下找到是那个目录占用最大。
    chrawsl
    chrawsl
    Dec 27, 2022
    6
    du / -h -d1

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

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

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

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

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