Linux 查看磁盘空间使用情况
1. df命令
- 功能:显示文件系统的整体磁盘空间使用情况。
- 工作原理:读取文件系统的超级块信息,显示文件系统的总容量、已用空间、可用空间以及挂载点。
- 特点:
- 显示的是整个分区的空间使用情况,而不是单个文件或目录的空间。
- 输出单位通常是 KB(默认),可以使用
-h
选项以人类可读的形式(如 MB、GB)显示。
示例:
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 30G 20G 60% /
/dev/sdb1 100G 80G 20G 80% /data
2. du命令
- 功能:统计文件或目录占用的磁盘空间。
- 工作原理:递归遍历指定目录下的所有文件和子目录,并计算其大小总和。
- 特点:
- 可以用于查看单个目录、文件的空间占用情况,而不是整体文件系统。
- 默认输出是以 KB 为单位,可以使用
-h
选项以人类可读形式显示。 - 支持
--max-depth
选项限制递归深度。
- 例子
du -sh /var/log
输出
2.5G /var/log
3为什么 ls
不能统计文件夹的大小?
ls 是用来列出文件和目录的信息的工具,它并不直接统计目录的大小。以下是原因:
目录大小只代表元数据占用的空间:
ls -l 输出的目录大小显示的是该目录的元数据,而不是其内容的大小。元数据包括了该目录内的文件名、权限等信息,而不是目录内所有文件和子目录的总大小。
目录本身在磁盘上占用少量空间(一般是 4 KB 左右,具体取决于文件系统),因此用 ls 查看时,目录的大小通常显示为固定值(如 4096 字节)。
递归统计需要更多操作:
- 统计整个目录的大小需要递归遍历所有子目录和文件,而
ls
并没有设计用于这类操作。
4 总结
du
是专门为统计目录及其内容的磁盘占用量而设计的工具,因此更适合此类任务。- df不光考虑文件占用空间,还统计被命令和程序占用的空间
- du命令只计算文件或目录占用的空间
# 查看整体文件系统的空间
df -h
# 查看某个目录的总占用空间
du -sh /path/to/directory
# 列出文件和目录信息
ls -l