在CentOS系统管理中,su命令是每一位管理员都必须熟练掌握的基础工具,它允许普通用户临时切换到其他用户(通常是超级用户root)的身份,从而获得执行高级管理任务的权限,监控系统资源,特别是磁盘空间的大小,是一项至关重要的日常工作,理解如何在su切换用户后有效地查看各种“大小”,是保障系统稳定运行的关键。

切换至root用户:su的正确使用
在执行需要高权限的查看命令之前,首先需要获取root权限,虽然直接使用su可以切换用户,但更推荐使用su -或su -l。su -会模拟一次完整的登录,不仅切换用户,还会加载目标用户(root)的环境变量和工作目录,这能确保后续命令的行为与root直接登录时完全一致,避免因环境差异导致的意外问题。
# 推荐的切换方式 su - # 然后输入root用户的密码
宏观视角:查看磁盘分区使用情况
获取root权限后,首先要了解的是整个磁盘的宏观使用状况,这时,df(disk free)命令是最佳选择,它能够显示文件系统的磁盘空间使用情况,结合-h(human-readable)参数,可以以KB、MB、GB等易读的格式输出结果。
df -h
执行后,你会看到一个类似下方的表格,清晰地展示了各个分区的空间状态。
| 文件系统 | 总大小 | 已用 | 可用 | 使用率% | 挂载点 |
|---|---|---|---|---|---|
| /dev/sda1 | 50G | 15G | 33G | 32% | |
| /dev/sda2 | 200G | 180G | 0G | 98% | /home |
| tmpfs | 8G | 0 | 8G | 0% | /dev/shm |
通过这个表格,管理员可以迅速发现哪个分区空间紧张,例如上表中的/home分区使用率已高达98%,需要立即关注。
微观视角:深入目录与文件
当df命令指明某个分区空间不足时,下一步就是定位具体是哪些目录或文件占用了大量空间,这时,du(disk usage)命令便派上了用场。du命令可以递归地计算指定目录或文件所占用的磁盘空间。
常用的组合参数包括:

-h:同样,以人类可读的格式显示。-s:仅显示总计,即当前目录或文件的总大小,而不列出其下每个子目录的大小。--max-depth=<N>:设置递归深度,例如--max-depth=1只显示当前目录下一级子目录的大小。
实用示例:
-
查看
/var/log目录的总大小:du -sh /var/log
这会直接返回
/var/log这个文件夹占用的总空间,非常适合快速评估。 -
查看当前目录下所有一级子目录的大小并排序:
du -sh * | sort -rh
这个命令组合非常强大,它会列出当前目录下所有文件和文件夹的大小,并按从大到小的顺序排列,让你一眼就能看出谁是“空间大户”。
-
查看
/home目录下占用空间最大的前10个文件或目录:
du -ah /home | sort -rh | head -n 10
这个命令链可以帮助你快速定位到问题根源,例如发现某个用户的下载文件夹里有数十GB的旧文件。
实战演练:定位磁盘空间占用大户
假设通过df -h发现根分区空间告急,一个标准排查流程如下:
su -切换到root用户。cd /进入根目录。du -sh * | sort -rh查看根目录下各个子目录的大小。- 假设发现
/usr目录最大,则cd /usr进入该目录。 - 再次执行
du -sh * | sort -rh,层层深入,直到找到具体的占用空间的大文件或目录,然后根据情况决定是清理、归档还是移动。
通过su、df和du的协同工作,CentOS管理员可以高效、精准地完成磁盘空间的监控与清理任务,确保系统健康运行。
相关问答 (FAQs)
问题1:du 和 df 命令显示的磁盘使用量为何有时会不一致?
解答: 这是一个常见现象,主要原因有以下几点:
- 已删除但被进程占用的文件: 如果一个文件被删除了,但仍有正在运行的进程打开并使用它,那么
df会认为该文件占用的空间仍在使用,而du则不会计算这个已删除的文件,导致df显示的已用空间大于du统计的总和,重启相关服务或系统后,空间会被释放。 - 文件系统保留空间:
ext4等文件系统默认会为root用户保留一部分空间(通常是5%),以防止系统完全塞满后无法登录管理。df的总空间包含了这部分保留空间,而du在统计普通文件时不会涉及它。 - 块大小差异:
df基于文件系统的块分配来计算,而du累加的是文件的实际大小,大量小文件可能会因为块分配的碎片化导致df显示的占用略高于du。
问题2:如何快速找出系统中所有超过100MB的大文件?
解答: 可以使用find命令结合ls来实现,这个命令非常高效,可以直接在全局范围内搜索,执行以下命令,系统会遍历整个文件系统,找出所有大于100MB(+100M)的普通文件(-type f),并以长格式(-lh)列出它们的详细信息,包括大小。
find / -type f -size +100M -exec ls -lh {} \;
- 表示搜索的起始路径,根目录代表全盘搜索,为了提高效率,可以指定一个更具体的目录,如
/var或/home。 -exec ls -lh {} \;是对找到的每个文件执行ls -lh命令。