在Linux系统中,管理磁盘空间是系统维护的重要环节,及时了解空间使用情况可避免因磁盘满载导致服务异常,本文将详细介绍多种查看Linux系统空间的方法,涵盖文件系统、目录、块设备及内存等维度的分析工具,并通过实例和表格帮助读者快速掌握操作技巧。
使用df
命令查看文件系统磁盘使用情况
df
(disk free)是Linux中最常用的磁盘空间查看命令,主要用于显示文件系统的整体磁盘使用量,包括已用空间、可用空间、使用率及挂载点等信息。
基本语法与常用选项
df [选项] [文件或目录]
常用选项包括:
-h
或--human-readable
:以人类可读格式显示(如K、M、G);-T
或--print-type
:显示文件系统类型(如ext4、xfs、nfs等);-i
或--inodes
:显示inode使用情况而非块使用量;-x
或--exclude-type
:排除指定文件系统类型(如-x tmpfs
忽略临时文件系统)。
示例输出与解读
执行df -hT
后,输出示例如下:
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda1 ext4 50G 20G 28G 42% /
tmpfs tmpfs 2G 0 2G 0% /dev/shm
/dev/sdb1 xfs 100G 35G 65G 35% /data
各列含义:
- Filesystem:文件系统名称(如/dev/sda1为物理分区,tmpfs为内存虚拟文件系统);
- Type:文件系统类型;
- Size:总空间大小;
- Used:已用空间;
- Avail:可用空间;
- Use%:使用率(超过80%需警惕);
- Mounted on:挂载点(如根目录/、数据盘/data)。
特殊场景:查看inode使用情况
inode是Linux中用于存储文件元数据的结构,大量小文件可能耗尽inode导致磁盘“已满”,通过df -i
可检查inode使用率:
df -i
若某分区Use%
接近100%,需清理小文件或优化文件存储策略。
使用du
命令分析目录/文件占用空间
du
(disk usage)用于递归统计指定目录或文件的磁盘占用空间,适合定位具体的大文件或目录。
基本语法与常用选项
du [选项] [文件或目录]
常用选项:
-h
:人类可读格式;-s
或--summarize
:仅显示总计大小,不递归子目录;--max-depth=N
:限制递归深度(如--max-depth=1
仅统计一级子目录);-a
或--all
:统计所有文件,而不仅仅是目录。
示例与技巧
-
查看当前目录总大小:
du -sh
输出示例:
2G .
(当前目录占用1.2GB)。 -
查看指定目录下各子目录大小:
du -h --max-depth=1 /var/log
输出示例:
2G /var/log/journal 800M /var/log/apt 4.0K /var/log/lost+found
可快速定位占用空间最大的子目录(如
journal
目录)。 -
查找Top10大文件:
结合sort
和head
命令:du -ah /home | sort -hr | head -n 10
-h
按人类可读排序,-r
降序,head -n 10
显示前10条结果。
使用lsblk
命令查看块设备信息
lsblk
(list block devices)用于显示磁盘分区的结构信息,包括磁盘名称、大小、挂载点、文件系统类型等,适合了解物理磁盘与分区的对应关系。
基本语法与选项
lsblk [选项]
常用选项:
-f
:显示文件系统信息(如UUID、Label);-d
:仅显示磁盘设备,不显示分区;-o NAME,SIZE,FSTYPE,MOUNTPOINT
:自定义输出列(设备名、大小、文件系统类型、挂载点)。
示例输出
执行lsblk -f
后:
NAME FSTYPE MOUNTPOINT SIZE RO
sda 256G 0
├─sda1 ext4 / 50G 0
├─sda2 swap [SWAP] 8G 0
└─sda3 xfs /data 198G 0
sdb 512G 0
└─sdb1 ext4 /backup 512G 0
- NAME:设备名(sda/sdb为磁盘,sda1/sdb1为分区);
- FSTYPE:文件系统类型(无值表示未格式化);
- MOUNTPOINT:挂载点(
[SWAP]
表示交换分区)。
使用free
命令查看内存与交换空间使用情况
虽然free
主要用于内存监控,但交换空间(swap)作为磁盘空间的特殊用途,也属于系统空间管理的一部分。
基本语法与选项
free [选项]
常用选项:
-h
:人类可读格式;-m
:以MB为单位显示;-s N
:每N秒刷新一次(如free -s 3
每3秒更新)。
示例输出
free -h
total used free shared buff/cache available
Mem: 7.7G 2.1G 4.3G 256M 1.3G 5.2G
Swap: 2.0G 0B 2.0G
- Mem:物理内存(total总内存,used已用,free空闲,buff/cache缓存);
- Swap:交换空间(当物理内存不足时,部分数据临时写入磁盘)。
使用ncdu
工具交互式分析磁盘空间
ncdu
(NCurses Disk Usage)是一个交互式磁盘分析工具,支持通过键盘导航、删除文件,比du
更直观,适合快速定位和清理大文件。
安装与使用
-
安装(以Ubuntu为例):
sudo apt install ncdu
-
扫描目录:
ncdu /var/log
进入交互界面后,通过上下键选择目录,按
Enter
进入子目录,按d
删除文件(需确认),按q
退出。 -
查看结果:
界面显示目录大小、占用百分比,并按大小排序,便于快速定位“空间大户”。
各命令适用场景对比
命令 | 主要用途 | 适用场景 | 常用选项 |
---|---|---|---|
df |
查看文件系统整体使用情况 | 监控磁盘使用率、排查空间不足 | -h , -T , -i |
du |
统计目录/文件具体占用空间 | 定位大文件、清理冗余数据 | -sh , --max-depth , -a |
lsblk |
查看块设备与分区结构 | 了解磁盘布局、挂载关系 | -f , -d , -o |
free |
查看内存与交换空间使用情况 | 内存管理、swap空间规划 | -h , -m , -s |
ncdu |
交互式磁盘空间分析 | 可视化定位大文件、快速清理 | 无(直接接目录路径) |
相关问答FAQs
Q1:为什么df
显示的已用空间和du
汇总的目录大小不一致?
A:主要有以下原因:
- 保留块(Reserved Blocks):文件系统会为root用户预留一定比例的空间(如5%),
df
的已用空间包含这部分,而du
仅统计普通用户占用的空间; - 挂载点重叠:若子目录被单独挂载(如
/home
挂载到独立分区),du /
会统计/home
的总大小,但df
中和/home
是两个独立的文件系统; - 文件状态:
du
统计时,若文件正在被写入或删除,可能因缓存延迟导致统计偏差; - inode占用:若inode耗尽,
df
会显示空间已满,但du
可能统计不到具体文件(因文件无法创建)。
Q2:如何自动清理不必要的文件释放空间?
A:可通过以下脚本定期清理常见冗余文件:
#!/bin/bash # 清理日志文件(保留最近7天) find /var/log -type f -name "*.log" -mtime +7 -exec rm -f {} ; # 清理包管理器缓存(apt/yum) command -v apt >/dev/null && sudo apt clean command -v yum >/dev/null && sudo yum clean all # 清理临时文件(/tmp中超过30天未访问) find /tmp -type f -atime +30 -exec rm -f {} ; echo "清理完成"
将脚本保存为clean_space.sh
,添加执行权限(chmod +x clean_space.sh
),并通过crontab -e
设置定时任务(如每月1日执行:0 0 1 * * /path/to/clean_space.sh
)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/16774.html