磁盘缓慢填满但没有可见的文件大小变化

niz*_*zle 16 filesystem disk-usage

df

 Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/vda1       30830588 22454332   6787120  77% /
none                   4        0         4   0% /sys/fs/cgroup
udev             1014124        4   1014120   1% /dev
tmpfs             204996      336    204660   1% /run
none                5120        0      5120   0% /run/lock
none             1024976        0   1024976   0% /run/shm
none              102400        0    102400   0% /run/user
Run Code Online (Sandbox Code Playgroud)

昨天的 77% 仅为 60%,几天后它将达到 100%。

我一直在监视文件大小有一段时间了:

sudo du -sch /*


9.6M    /bin
65M     /boot
224K    /build
4.0K    /dev
6.5M    /etc
111M    /home
0       /initrd.img
0       /initrd.img.old
483M    /lib
4.0K    /lib64
16K     /lost+found
8.0K    /media
4.0K    /mnt
4.0K    /opt
du: cannot access ‘/proc/21705/task/21705/fd/4’: No such file or directory
du: cannot access ‘/proc/21705/task/21705/fdinfo/4’: No such file or directory
du: cannot access ‘/proc/21705/fd/4’: No such file or directory
du: cannot access ‘/proc/21705/fdinfo/4’: No such file or directory
0       /proc
21M     /root
336K    /run
12M     /sbin
8.0K    /srv
4.1G    /swapfile
0       /sys
4.0K    /tmp
1.1G    /usr
7.4G    /var
0       /vmlinuz
0       /vmlinuz.old
14G     total
Run Code Online (Sandbox Code Playgroud)

它每天给我(或多或少)相同的数字。总共 14G 不到磁盘大小的一半。剩下的去哪儿了?

我的 Linux 知识并没有深入很多。

文件是否可能不显示在这里?是否可以以任何其他方式分配空间?

mur*_*uru 28

如果磁盘空间有无形的增长,则可能的罪魁祸首是文件被删除。在 Windows 中,如果您尝试删除由某物打开的文件,则会出现错误。在 Linux 中,文件将被标记为已删除,但数据将保留,直到应用程序放手。在某些情况下,这可以用作在自己之后进行清理的一种巧妙方式- 应用程序崩溃不会阻止清理临时文件。

查看已删除、仍在使用的文件:

lsof -b 2>/dev/null | grep deleted
Run Code Online (Sandbox Code Playgroud)

您可能有大量已删除的文件 - 这本身不是问题。单个删除的文件变大是一个问题。

重新启动应该可以解决这个问题,但如果您不想重新启动,请检查所涉及的应用程序(lsof输出中的第一列)并重新启动或关闭看起来合理的应用程序。

如果你曾经看到类似的东西:

zsh   1724   muru   txt   REG   8,17   771448   1591515  /usr/bin/zsh (deleted)
Run Code Online (Sandbox Code Playgroud)

如果应用程序和删除的文件相同,则可能意味着应用程序已升级。您可以忽略这些作为大量磁盘使用的来源(但您仍应重新启动程序,以便应用错误修复)。

中的文件/dev/shm是共享内存对象,不会在磁盘上占用太多空间(我认为最多是一个 inode 编号)。它们也可以安全地忽略。命名vteXXXXXX的文件是来自基于 VTE 的终端模拟器(如 GNOME 终端、终结者等)的日志文件。如果您打开一个终端窗口并输出很多(我的意思是很多)东西,这些可能会很大。