答案:df和du是Linux磁盘管理的核心命令,df -h查看文件系统整体使用情况,du -sh分析目录空间占用,通过df定位高占用分区后,用du --max-depth=1逐级深入查找大文件,结合sort和head筛选最大占用者,注意df与du差异常因已删除但被进程占用的文件导致,可用lsof | grep deleted排查,定期清理日志、临时文件、旧内核并配置监控告警可有效预防空间不足问题。

在Linux系统中,检查磁盘使用情况是日常系统维护的关键一环,我们主要依赖
df
du
df
du
要检查Linux中的磁盘使用情况,核心就是灵活运用
df
du
1. 使用 df
df
查看所有文件系统的使用情况(人类可读格式):
df -h
这个命令会列出所有已挂载的文件系统,显示它们的大小、已用空间、可用空间、使用百分比以及挂载点。
-h
查看特定文件系统的使用情况:
df -h /home
如果你只关心
/home
显示文件系统类型:
df -Th
-T
查看inode使用情况:
df -ih
-i
2. 使用 du
du
查看当前目录的总大小(人类可读格式):
du -sh .
-s
.
查看指定目录的总大小:
du -sh /var/log
这会显示
/var/log
查看当前目录下所有子目录的大小(不递归深入):
du -h --max-depth=1 .
--max-depth=1
找出占用空间最大的前几个文件或目录: 结合
sort
head
du -h /path/to/check | sort -rh | head -n 10
这里,
sort -rh
-r
-h
head -n 10
当系统突然报告磁盘空间不足,或者某个分区的使用率飙升时,最让人头疼的就是如何迅速找出那些“大文件”或“大目录”。我个人处理这类问题时,通常会采用一种自上而下、逐步深入的策略,而
du
首先,我会用
df -h
/
du -sh *
从根目录开始,查看第一级子目录的占用情况:
sudo du -h --max-depth=1 / | sort -rh | head -n 10
这里加上
sudo
/
/var
/opt
/usr
/home
定位到最大的子目录,继续深入: 假设上一步发现
/var
/var
sudo du -h --max-depth=1 /var | sort -rh | head -n 10
这样,你可能会发现
/var/log
/var/lib
针对性地检查: 如果发现是
/var/log
/var/log
sudo du -h /var/log/*.log | sort -rh | head -n 10
或者,如果日志文件太多,可以再次用
--max-depth=1
sudo du -h --max-depth=1 /var/log | sort -rh | head -n 10
通过这种迭代的方法,你就能很快地锁定具体是哪个文件或目录导致了磁盘空间不足。经验告诉我,通常是日志文件、数据库文件、用户上传的大文件或旧的备份文件在作怪。
这是一个非常常见的疑问,也是很多初学者在排查磁盘空间问题时会遇到的“坑”。
df
du
最主要,也最常见的差异原因,就是已删除但仍被进程占用的文件。
想象一下这个场景:一个应用程序(比如一个Web服务器或数据库)正在写入一个日志文件。突然,这个日志文件变得非常大,你作为系统管理员,为了释放空间,直接用
rm
df
rm
df
du
du
du
df
du
df
如何排查这种情况? 你可以使用
lsof
sudo lsof | grep deleted
这个命令会列出所有被打开的文件,并过滤出那些状态为
(deleted)
除了这个主要原因,还有一些次要因素也可能导致差异:
du
df
du
df
df
du
理解这些差异,能让你在面对看似矛盾的磁盘使用报告时,更有信心去分析和解决问题。
有效管理Linux磁盘空间不仅仅是知道如何检查,更在于如何预防和解决问题。在多年的系统维护经验中,我总结出了一些非常实用的技巧和最佳实践,希望能帮助大家避免磁盘空间不足的窘境。
定期清理日志文件: 日志文件是磁盘空间最常见的“吞噬者”。
logrotate
logrotate
/etc/logrotate.conf
logrotate
sudo find /var/log -type f -name "*.log" -mtime +30 -delete
注意: 在删除任何文件前,请务必确认其重要性,并避免删除当前正在写入的日志文件。
管理临时文件:
/tmp
/var/tmp
tmpwatch
systemd-tmpfiles-clean
/tmp
清理旧的内核版本: 每次系统更新都可能安装新的内核,而旧的内核版本通常会被保留,以防新内核出现问题。但随着时间推移,这些旧内核会占用大量空间。
sudo apt autoremove --purge
这个命令会自动删除不再需要的依赖包,包括旧的内核。
sudo dnf remove --oldinstallonly --setopt installonly_limit=2 kernel
或者手动列出并删除:
rpm -qa | grep kernel | sort sudo yum remove kernel-`uname -r` # 删除当前正在使用的内核以外的旧内核
警告: 至少保留一个可用的旧内核,以防新内核启动失败。
识别并处理大文件/目录: 利用前面提到的
du -h --max-depth=1 /path | sort -rh | head -n 10
配置监控与告警: 最有效的管理方式是防患于未然。
cron
#!/bin/bash
THRESHOLD=90
PARTITION="/"
USAGE=$(df -h $PARTITION | awk 'NR==2 {print $5}' | sed 's/%//g')if [ "$USAGE" -gt "$THRESHOLD" ]; then echo "Warning: Disk usage on $PARTITION is at $USAGE%" | mail -s "Disk Space Alert" your_email@example.com fi
将此脚本添加到`crontab`中,定期执行。
合理规划分区: 在系统安装初期,合理地规划分区(例如,将
/var
/home
/opt
记住,磁盘空间管理是一个持续的过程。没有一劳永逸的解决方案,只有持续的关注和维护才能确保系统的稳定运行。
以上就是如何在Linux中检查磁盘使用 Linux df与du命令对比的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号