我遇到了用完我的一个客户端服务器的磁盘空间的问题。
/var/lib/mysql中的命令ls -lah的输出显示:
drwx------ 2 mysql mysql 16K Dec 30 2015 database_xyz
但是,当我用du -sh *命令检查同一目录中的文件大小时,输出显示:
22G database_xyz
为什么输出的命令显示两个完全不同的结果?
驱动器上剩下的只有2.2GB。
root@jon-cust-lifeincity:/var/lib/mysql# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg-root 49G 44G 2.2G 96% / tmpfs 1007M 0 1007M 0% /lib/init/rw udev 1002M 108K 1002M 1% /dev tmpfs 1007M 0 1007M 0% /dev/shm /dev/sda1 228M 16M 200M 8% /boot
编辑:
原来, database_xyz实际上是一个目录,而不是一个文件。 所以混乱是由我的脑子组成的。
看来你对你被告知的有误解。 ls -lah命令列出当前目录的内容。 在这个特定的情况下是/var/lib/mysql 。 除此之外,你被告知这一点
drwx------ 2 mysql mysql 16K Dec 30 2015 database_xyz
你误解了这是在告诉你什么。
您可以将目录视为一个包含目录条目列表的平面文件。 (简单)目录项是一个文件名和一个指向该文件在磁盘上的位置的指针。 这些信息占用磁盘空间。
什么
drwx------ 2 mysql mysql 16K Dec 30 2015 database_xyz
告诉你在/var/lib/mysql名为database.xyz的目录项。 该条目是一个文件typesd ,它表示它是一个目录,除此之外,目录“文件”的大小是16K。
要知道database_xyz文件的大小,只需input
du -sh database_xyz
你会发现确切的结果
ls不是find目录大小的正确工具。 它只适用于不是目录的文件。
我可以看到,你正在列出一个目录的详细信息(第一个字符)
drwx------ 2 mysql mysql 16K Dec 30 2015 database_xyz
用du代替。 这是在stackoverflow 类似的post 。