大概也就只有爱折腾的极客们,才敢将Linux系统作为日常操作系统吧。
磁盘清理,在Windows系统中,简直不要太简单,各种电脑管家打开磁盘分析清理一键搞定。但在Linux系统中,可就没那么容易了,一不小心执行了一些不恰当的命令便让你后悔不已。
所以这里给大家分享一些Linux子系统中的Ubuntu桌面版的磁盘分析和日志清理的经验。
首先,磁盘清理嘛,本质无非就是删一些大文件呗。所以大家只需要会一个命令就够了:
sudo rm -rf /*
如果是在公司的服务器上执行,跑完之后,你也可以跑了。如果是在自己的电脑上跑的,那么恭喜你,可以换回Windows系统的电脑,再也不用经受Linux的折磨了。
在此,本着不教大家使坏的原则,严正声明,上面的命令(sudo rm -rf /*)大家千万不要执行,sudo rm -rf ./*的命令大家谨慎执行,带上sudo的命令大家小心执行。
baobab——磁盘占用分析
磁盘清理的第一步肯定是要分析磁盘的目录结构啦,所以baobab(猴面包树)帮你解决苦恼。
如果只分析当前用户下的所有目录直接输入baobab就够了,如果分析整个磁盘那就以管理员身份执行sudo baobab
什么?你说没有这个命令,那就安装一下呗,sudo apt install baobab
执行后你就可以看到整个电脑的磁盘使用情况,点到根目录下你就可以看到类似的界面:
这里就可以根据目录大小和结构,去选择性地清理一些无用的文件或目录了。
journalctl——系统日志分析和清理
是的,你没看错,上面的日志文件已经有4.4G了。那这个日志文件要怎么清理?
cd到目录下,然后直接清理。是个解决方法,但不建议这么做。
journalctl分析一下日志使用情况:
:~$ journalctl --disk-usage
Archived and active journals take up 4.0G in the file system.
从命令的输出结果看,日志量确实已经有4个G多了。
那就清理一下呗:
sudo journalctl --vacuum-time=30d
以管理员身份执行,只保留最近30天的日志记录,当然也支持按磁盘占用大小进行清理换成 --vacuum-size参数就可以了:
更多journalctl命令相关的信息,执行journalctl --help就可以查看,看不懂就自行百度。
执行完你会看到类似这样的输出:
再次查看一下日志的磁盘占用:
:~$ journalctl --disk-usage
Archived and active journals take up 72.0M in the file system.
只剩下72M的磁盘占用,舒服多了~~
安装包清理
除了日志还有就是安装包,一般每次升级或者软件安装完后,安装包是可以清理掉的:
sudo apt autoremove
就能自动将无用安装包清理掉,系统升级后/boot空间不足也可以将无用的系统内核安装包清理。
内核清理
sudo apt autoremove命令并不能将无用的内核安装包完全清理干净,一般我们还要在检查一下是否存在未安装的旧内核安装包。
首先查看我们当前使用的内核版本,防止删除时删错版本:
:~$ uname -a
Linux ****-****-***-****** 5.15.0-91-generic #101-Ubuntu SMP Tue Nov 14 13:30:08 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
查询系统已存在的内核安装包:
dpkg --get-selections | grep linux
这里可以看到系统里存在很多个未安装(deinstall)的旧内核版本,这些都是可以清理的:
对于已安装的旧内核,可以执行sudo apt remove <内核包名>进行卸载,卸载完成后对应的包则会显示为未安装(deinstall),在执行一下sudo apt purge <内核包名>就可以完全清理掉。
清理完后再检查一下:
清爽极了~~~
总结
Linux磁盘清理不像Windows那样,有专门的电脑管家可以一键清理,需要从多个方面去分析并清理。
以Ubuntu为例,baobab命令可以以可视化的形式对系统的磁盘目录结构进行磁盘占用分析,journalctl命令则是用来做系统日志分析和清理的。除了文件、系统日志、无用安装包,我们同时还需要分析一下系统更新产生的旧内核,清理系统旧内核有利于释放/boot空间,为以后的系统升级提供足够的磁盘空间。