首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux 磁盘空间满了?这几个命令轻松搞定!

在 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 系统运维过程中有所帮助。如果你在实际操作中遇到了任何问题,或者有更好的解决方法,欢迎在留言区分享交流哦!

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OsbC6KTyrXrfccoqVSAThA1Q0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券