通过命令行清理 Linux 机器上的磁盘空间
我仍然运行着几年前在 AWS 上配置的一个 EC2 实例,用来托管我的一些业余项目。它使用的是 Linux AMI(亚马逊机器镜像),这个镜像已经严重过时,而且在我的网站流量高峰期性能也差得令人发指。
最近,我附加到 EC2 实例的 EBS(弹性块存储)卷满了。我不想花冤枉钱去升级 EC2 实例或 EBS 卷,于是开始研究如何删除机器上一些占用空间的无用文件。
我绝对算不上 Linux 专家。因此,我可能在谷歌上搜索了 20 多个不同的关键词,希望能找到解决办法。最终,Stack Overflow、博客文章和各种帮助论坛帮了我大忙。
现在我也想把这份帮助传递下去,分享一些对我有帮助的命令。
注意:这些命令适用于 Ubuntu/Debian Linux 发行版。其他 Linux 发行版的效果可能有所不同。
检查磁盘使用情况和可用磁盘空间
要检查机器的磁盘使用情况并查看剩余空间,可以在终端中运行以下命令:
df -h
此列表显示计算机上已挂载的所有文件系统、它们的位置、它们的大小、已使用的存储空间以及可用存储空间。
对我来说,它显示我的根文件系统已 100% 满!
自动移除不必要的依赖项
在 Linux 系统上安装依赖项时,通常会使用 APT(高级软件包工具)。随着时间的推移,您可能会安装一些不再需要的软件包。要自动删除任何不必要的依赖项,您可以运行以下命令:
sudo apt-get autoremove
清理缓存包
/var/cache清理存储在计算机上该目录中的软件包文件也很有帮助。您可以通过运行以下命令来完成此操作:
sudo apt-get clean
来源:https ://www.networkworld.com/article/3453032/cleaning-up-with-apt-get.html
查找并删除文件名符合特定模式的文件
在我刚开始使用 Git 的时候,我并没有完全理解这个文件的作用 .gitignore,它告诉 Git 忽略某些文件或目录。由于我没有好好利用这个文件,导致 .DS_Store我的电脑上有很多文件(比如 NPM 调试日志)占用了大量空间。
为了查找 .DS_Store我机器上所有子目录中的所有文件,我运行了以下命令:
find . -name ".DS_Store"
这条命令会列出所有匹配的文件,但不会对其进行任何操作。它更像是一次模拟运行。如果您想要删除这些文件,可以运行相同的命令,但要-delete像这样传递参数:
find . -name ".DS_Store" -delete
由于这些文件仍然在我的源代码控制中(因为我没有在 .gitignore文件中列出它们),所以我还需要提交并推送此更改,并修改我的 .gitignore文件以忽略这些讨厌的文件。
显示所有子目录及其大小,按大小排序
我想看看我的众多项目中哪个占用的空间最大。为了找到这个列表,我运行了以下命令,该命令会遍历当前目录下的所有子目录,按从大到小的顺序排列它们的大小,并以易于阅读的格式打印出来:
du -hs * | sort -hr
列出目录中的所有文件和子目录,并按大小排序。
确定了最大的目录后,我需要深入研究这些目录中哪些文件占用了过多的空间。
只需运行以下命令,即可列出给定目录中的所有文件和目录:
ls
但是,您还可以向该命令传递其他标志来对输出进行排序和格式化。您可以使用以下命令列出目录中的所有文件和目录,并按其大小排序,同时以易于阅读的格式显示其大小信息:
ls -laSh
来源:https ://www.tecmint.com/list-files-ordered-by-size-in-linux/
在计算机上的任何位置搜索大型文件
在我逐个目录清理了不需要的文件或删除了不再展示的项目之后,仍然有相当多的磁盘空间被占用。我无法轻易确定我的项目中哪里出了问题,或者是什么占用了这么多空间。
下一个命令简直救了我一命。它会查找大于指定大小(我这里是 50MB)的大文件,并将它们打印到控制台。
sudo find / -type f -size +50M -exec ls -lh {} \;
我发现的情况让我很惊讶。罪魁祸首有两个:一是缓存中snapd我不再需要的文件,二是预先分配的 MongoDB 存储空间,在这个类似开发的环境里我根本用不上。
此时,只需运行命令rm <filename>即可rm -rf <directory name>删除不需要的文件和目录。
来源:https ://stackoverflow.com/questions/20031604/amazon-ec2-disk-full/20032145
准备就绪!
经过几个小时的故障排除,我的磁盘空间使用量终于恢复正常,我的 EC2 实例也再次正常运行了。成功!
文章来源:https://dev.to/thawkin3/cleaning-up-disk-space-on-a-linux-machine-from-the-command-line-nbn
