3

我试图猜测在 linux 系统上使用的磁盘。问题是,使用像 'du -kxa / |sort -g' 这样的命令,我发现使用的空间比文件系统报告的要少(19Gb 分区中的 8Gb)。我怀疑在几个挂载点下有隐藏的文件和文件夹。我无法卸载磁盘,因为它是生产机器并且不能轻易停止。

问题是:

在 linux 上,如何获取隐藏在挂载点下的文件夹和文件?有没有办法测量这个空间?

Linux版本:Redhat Enterprise linux server 5.3。

4

2 回答 2

13

这不是一个真正的编程问题,因此可能有一个更好的论坛。然而,作为一个快速的答案,这是绑定挂载有用的一件事。假设我有两个独立的文件系统/usr,并且/usr/local,您可以这样做来查看是否/usr/local隐藏了任何内容:

mkdir /tmp/usr
mount --bind /usr /tmp/usr
ls /tmp/usr/local
# clean up if necessary
umount /tmp/usr
rmdir /tmp/usr
于 2012-11-05T17:27:08.023 回答
-2

隐藏文件(其名称以点开头)仅存在于ls命令和 shell 文件扩展中。否则,它们只是名称以点开头的文件。

此外,如果文件没有更多名称,文件仍然可以使用文件系统中的空间。这可能发生在文件仍由某个进程打开的情况下,该进程unlink(2) -ed 其姓氏。

您可以使用lsof来找出哪些进程正在打开某些文件。您可以/proc/1234/fd用来获取进程 1234 的打开文件。

要获取某个目录下的隐藏文件,您可以使用

 find /some/dir -name '.*' -ls

此外,文件在磁盘上使用的空间超过了其数据所需的空间。阅读有关inode 指针结构inode文件系统ext4碎片的更多信息……通常,非常小的文件(十几个字节)会占用两个磁盘扇区(例如一千字节)。

于 2012-11-05T17:29:18.267 回答