在 Linux 系统的日常运维中,磁盘空间满了是一个让人头疼的问题。它可能导致系统运行缓慢、应用程序无法正常工作,甚至影响服务器的稳定运行。
一、df 命令:查看磁盘使用情况
df命令能够帮助我们快速了解系统磁盘的整体使用情况。通过它,我们可以知道每个分区已经使用了多少空间,还剩余多少空间,以及文件系统的挂载点等关键信息。
使用df命令非常简单,在终端中直接输入df,按下回车键,你就会得到类似下面这样的输出:
Filesystem 1K-blocks Used Available Use% Mounted ondevtmpfs 493184 0 493184 0% /devtmpfs 503344 0 503344 0% /dev/shmtmpfs 503344 6560 496784 2% /runtmpfs 503344 0 503344 0% /sys/fs/cgroup/dev/vda1 41157632 3433444 35791716 9% /tmpfs 100668 0 100668 0% /run/user/0Filesystem 1K-blocks Used Available Use% Mounted ondevtmpfs 493184 0 493184 0% /devtmpfs 503344 0 503344 0% /dev/shmtmpfs 503344 6560 496784 2% /runtmpfs 503344 0 503344 0% /sys/fs/cgroup/dev/vda1 41157632 3433444 35791716 9% /tmpfs 100668 0 100668 0% /run/user/0Filesystem 1K-blocks Used Available Use% Mounted ondevtmpfs 493184 0 493184 0% /devtmpfs 503344 0 503344 0% /dev/shmtmpfs 503344 6560 496784 2% /runtmpfs 503344 0 503344 0% /sys/fs/cgroup/dev/vda1 41157632 3433444 35791716 9% /tmpfs 100668 0 100668 0% /run/user/0
在这个输出中,Filesystem表示文件系统,也就是磁盘分区;1K-blocks表示该分区的总大小,单位是 1KB;Used是已使用的空间;Available是可用空间;Use%则直观地显示了该分区的使用百分比;最后的Mounted on就是文件系统的挂载点啦。
从上面的输出中,我们一眼就能看出哪个分区的磁盘空间快用完了。比如,这里的/dev/vda1分区已经使用了 9% 的空间,虽然目前看起来还比较充裕,但如果继续这样增长下去,很快也可能面临磁盘空间不足的问题。
如果我们想要以更人性化的方式显示磁盘空间,比如以 GB 为单位,并且让输出结果更美观,可以使用df -h命令。这里的-h参数就是 “human-readable”(人类可读)的意思。执行这个命令后,输出可能会像这样:
Filesystem Size Used Avail Use% Mounted ondevtmpfs 482M 0 482M 0% /devtmpfs 492M 0 492M 0% /dev/shmtmpfs 492M 6.4M 486M 2% /runtmpfs 492M 0 492M 0% /sys/fs/cgroup/dev/vda1 39G 3.3G 34G 9% /tmpfs 99M 0 99M 0% /run/user/0Filesystem Size Used Avail Use% Mounted ondevtmpfs 482M 0 482M 0% /devtmpfs 492M 0 492M 0% /dev/shmtmpfs 492M 6.4M 486M 2% /runtmpfs 492M 0 492M 0% /sys/fs/cgroup/dev/vda1 39G 3.3G 34G 9% /tmpfs 99M 0 99M 0% /run/user/0Filesystem Size Used Avail Use% Mounted ondevtmpfs 482M 0 482M 0% /devtmpfs 492M 0 492M 0% /dev/shmtmpfs 492M 6.4M 486M 2% /runtmpfs 492M 0 492M 0% /sys/fs/cgroup/dev/vda1 39G 3.3G 34G 9% /tmpfs 99M 0 99M 0% /run/user/0
这样是不是看起来更清晰明了呢?通过df -h,我们可以快速对系统磁盘空间有一个全面且直观的了解。
二、du 命令:深入分析目录占用空间
当我们通过df命令知道了某个分区磁盘空间不足后,接下来就需要深入探究到底是哪些目录或文件占用了大量空间。这时候,du命令就派上用场啦。du命令可以用来查看指定目录(包括其子目录)所占用的磁盘空间大小。
例如,我们想查看/home目录下各个子目录占用的空间情况,可以在终端中输入du -h /home。这里的-h参数同样是为了以人类可读的方式显示结果。执行命令后,你会得到类似下面这样的输出:
4.0K /home/user1/Documents8.0K /home/user1/Pictures4.0K /home/user1/Music12K /home/user1/Downloads28K /home/user14.0K /home/user2/Documents8.0K /home/user2/Pictures4.0K /home/user2/Music12K /home/user2/Downloads28K /home/user256K /home4.0K /home/user1/Documents8.0K /home/user1/Pictures4.0K /home/user1/Music12K /home/user1/Downloads28K /home/user14.0K /home/user2/Documents8.0K /home/user2/Pictures4.0K /home/user2/Music12K /home/user2/Downloads28K /home/user256K /home4.0K /home/user1/Documents8.0K /home/user1/Pictures4.0K /home/user1/Music12K /home/user1/Downloads28K /home/user14.0K /home/user2/Documents8.0K /home/user2/Pictures4.0K /home/user2/Music12K /home/user2/Downloads28K /home/user256K /home
从这个输出中,我们可以清晰地看到/home目录下每个用户的子目录以及它们各自占用的空间大小。通过这种方式,我们能够快速定位到占用空间较大的目录,以便进一步分析和处理。
如果我们只想查看/home目录下一级子目录的总大小,而不深入到子目录内部,可以使用du -h --max-depth=1 /home命令。这里的--max-depth=1参数表示只显示指定目录下一级子目录的大小,不再继续深入。执行这个命令后,输出可能会是这样:
28K /home/user128K /home/user256K /home28K /home/user128K /home/user256K /home28K /home/user128K /home/user256K /home
这样,我们就能更简洁地获取到/home目录下一级子目录的占用空间情况,快速筛选出可能存在问题的目录。
三、find 命令:精准定位大文件
有时候,我们不仅要知道哪些目录占用空间大,还需要找到具体占用大量空间的大文件,以便决定是否删除或迁移它们。这时候,find命令就发挥出它强大的搜索功能了。
假设我们要在/var目录下查找大于 100MB 的文件,可以使用以下命令:
find /var -type f -size +100Mfind /var -type f -size +100Mfind /var -type f -size +100M
在这个命令中,/var是我们要搜索的目录范围;-type f表示只搜索文件(如果要搜索目录,可以使用-type d);-size +100M则表示文件大小大于 100MB,这里的+表示大于,如果要查找小于某个大小的文件,可以使用-。
执行这个命令后,系统会在/var目录及其子目录中进行搜索,并列出所有符合条件的文件路径。比如可能会输出:
/var/log/syslog.1/var/lib/mysql/ibdata1/var/log/syslog.1/var/lib/mysql/ibdata1/var/log/syslog.1/var/lib/mysql/ibdata1
通过这样的方式,我们就能精准定位到那些占用大量磁盘空间的大文件。找到这些大文件后,我们就可以根据实际情况进行处理。如果这些文件是一些日志文件,且已经不再需要,可以考虑删除它们来释放磁盘空间;如果是一些重要的数据文件,可以将它们迁移到其他存储空间更大的设备上。
四、综合运用解决磁盘空间问题
当我们通过df命令发现磁盘空间不足,再利用du命令定位到占用空间较大的目录,最后借助find命令找到了具体的大文件后,就可以采取相应的措施来解决磁盘空间问题了。
例如,如果在/var/log目录下发现了大量的日志文件占用了磁盘空间,而这些日志文件我们已经不再需要,那么可以使用以下命令来删除它们:
rm -rf /var/log/*.logrm -rf /var/log/*.logrm -rf /var/log/*.log
这里的rm -rf是删除文件和目录的命令,-r表示递归删除,即删除目录及其所有子目录和文件;-f表示强制删除,不提示确认信息。需要注意的是,在使用rm -rf命令时一定要谨慎,确保删除的文件是我们确实不再需要的,否则一旦误删重要文件,可能会导致系统出现严重问题。
df命令帮助我们宏观了解磁盘使用情况,du命令深入分析目录占用空间,find命令精准定位大文件。
希望今天的分享能对你在 Linux 系统运维过程中有所帮助。如果你在实际操作中遇到了任何问题,或者有更好的解决方法,欢迎在留言区分享交流哦!
领取专属 10元无门槛券
私享最新 技术干货