![磁盘已满但找不到大文件](https://linux22.com/image/1171510/%E7%A3%81%E7%9B%98%E5%B7%B2%E6%BB%A1%E4%BD%86%E6%89%BE%E4%B8%8D%E5%88%B0%E5%A4%A7%E6%96%87%E4%BB%B6.png)
我正在运行一个 bash 脚本,它在 tmp 目录中创建了一个 14G 的文件,我删除了它,但仍然找不到很大的目录或文件。
我对 df -h 的输出
Filesystem Size Used Avail Use% Mounted on
udev 474M 0 474M 0% /dev
tmpfs 99M 11M 88M 11% /run
/dev/vda1 25G 25G 0 100% /
tmpfs 491M 0 491M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 491M 0 491M 0% /sys/fs/cgroup
/dev/vda15 105M 3.9M 101M 4% /boot/efi
/dev/loop0 90M 90M 0 100% /snap/core/7917
/dev/loop1 55M 55M 0 100% /snap/lxd/12211
/dev/loop2 94M 94M 0 100% /snap/core/8935
/dev/loop3 68M 68M 0 100% /snap/lxd/14194
tmpfs 99M 0 99M 0% /run/user/0
/dev/loop4 55M 55M 0 100% /snap/core18/1705
/dev/loop5 49M 49M 0 100% /snap/gtk-common-themes/1474
/dev/loop6 153M 153M 0 100% /snap/chromium/1071
tmpfs 99M 0 99M 0% /run/user/1000
我在 / 目录中的 du -sh 的输出
du: cannot access './proc/19935/task/19935/fd/4': No such file or directory
du: cannot access './proc/19935/task/19935/fdinfo/4': No such file or directory
du: cannot access './proc/19935/fd/3': No such file or directory
du: cannot access './proc/19935/fdinfo/3': No such file or directory
4.7G .
由于磁盘已满,我无法安装 ncdu 或任何其他工具,考虑到 du -sh 之后的汇总大小,25GB 中的剩余空间在哪里
我的 lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=19.10
DISTRIB_CODENAME=eoan
DISTRIB_DESCRIPTION="Ubuntu 19.10"
du -sh /*/ 的输出
119M /bin/
97M /boot/
0 /dev/
5.9M /etc/
212M /home/
682M /lib/
4.0K /lib32/
4.0K /lib64/
4.0K /libx32/
16K /lost+found/
4.0K /media/
4.0K /mnt/
4.0K /opt/
du: cannot access '/proc/20791/task/20791/fd/4': No such file or directory
du: cannot access '/proc/20791/task/20791/fdinfo/4': No such file or directory
du: cannot access '/proc/20791/fd/3': No such file or directory
du: cannot access '/proc/20791/fdinfo/3': No such file or directory
0 /proc/
72K /root/
11M /run/
30M /sbin/
1.9G /snap/
4.0K /srv/
0 /sys/
17M /tmp/
845M /usr/
768M /var/
答案1
POSIX 标准允许你在文件仍处于打开状态时删除它。只有当打开文件的所有进程都关闭时,文件才会被真正删除
这解除链接()函数应删除指向文件的链接。如果路径名为符号链接,解除链接()应删除由路径命名的符号链接,并且不会影响由符号链接的内容命名的任何文件或目录。否则,解除链接()应删除路径指向的路径名命名的链接,并减少该链接引用的文件的链接数。
当文件的链接数变为 0 且没有进程打开该文件时,应释放该文件占用的空间,并且该文件将不再可访问。如果在最后一个链接被删除时有一个或多个进程打开该文件,则应在删除链接之前删除该链接解除链接()返回,但文件内容的删除将被推迟,直到对该文件的所有引用都关闭为止。
https://pubs.opengroup.org/onlinepubs/009695399/functions/unlink.html
因此,如果脚本中正在运行的进程仍在打开文件,则空间仍会被消耗,并且您无法观察到它,直到进程关闭文件或被终止
答案2
那么类似这样的情况怎么样:
du -h -t 500M -a /
用法:
-h, --human-readable
print sizes in human readable format (e.g., 1K 234M 2G)
-t, --threshold=SIZE
exclude entries smaller than SIZE if positive, or entries
greater than SIZE if negative
-a, --all
write counts for all files, not just directories