Linux 清理磁盘空间常见操作
使用如下方式可以清理 Linux 的绝大部分垃圾。
清理 journal 日志¶
一般可以清理 2~3 GB。
-
查看 journal 日志占用的硬盘空间:
journalctl -x --disk-usage
-
一次性清理 journal 日志:
journalctl --vacuum-size=10M # 清理日志到只剩下 10M journalctl --vacuum-time=1d # 清理一天前的日志
注意
这两个操作只是一次性清除日志,并不能限制以后的日志文件不会超过这个大小。很多博客里说这两个操作可以限制日志文件的大小,属实是误导人。
如果需要永久限制日志文件的大小,需要修改 /etc/systemd/journald.conf
文件。
-
永久限制 journal 日志的大小:
journald.conf[Journal] SystemMaxUse=10M # 硬盘中只保留最近 10M 的日志 RuntimeMaxUse=10M # 内存中只保留最近 10M 的日志
-
不保留日志
journald.conf[Journal] Storage=none # 丢弃所有的日志,不保存到内存或磁盘
危险
不要使用 rm
命令来删除 journal 日志。参考 删除日志释放空间最好不要用rm
清理 apt-get 缓存¶
一般可以清理数百 MB。
apt-get clean
清理 pip 缓存¶
一般可以清理两三百 MB。
rm -r ~/.cache/pip
清理旧版本 snap 包¶
一般每个旧的 snap 包可以清理 100 MB。
-
列出所有的 snap 包:
snap list --all
可以见到很多标记为
disabled
的 snap 包,这些包是可以直接卸载的。Name Version Rev Tracking Publisher Notes certbot 1.26.0 1952 latest/stable certbot-eff✓ classic cmake 3.23.0 1070 latest/stable crascit✓ disabled,classic cmake 3.23.1 1082 latest/stable crascit✓ classic core 16-2.55.2 12941 latest/stable canonical✓ core,disabled core 16-2.54.4 12834 latest/stable canonical✓ core core18 20220309 2344 latest/stable canonical✓ base core20 20220318 1405 latest/stable canonical✓ base
-
删除这些重复的 snap 包:
snap remove XXXX --revision YYYY # XXXX 是软件的 name,YYYY 是软件的 Rev
-
也可以使用这个脚本清除:
来自 How to Clean Up Snap Package Versions in Linux
#!/bin/bash # Removes old revisions of snaps # CLOSE ALL SNAPS BEFORE RUNNING THIS set -eu snap list --all | awk '/disabled/{print $1, $3}' | while read snapname revision; do snap remove "$snapname" --revision="$revision" done
清理登录日志¶
这个文件是记录错误登录的日志,如果有人每天试你的密码来暴力破解你的 ssh,那你的这个文件就会很大。
echo "" > /var/log/btmp
该文件同理
echo "" > /var/log/auth.log
同理,不应当使用 rm
而是使用 echo
来清空这两个日志。
清理 docker¶
-
查看空间占用情况
docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE Images 5 1 645.4MB 611.9MB (94%) Containers 1 1 0B 0B Local Volumes 1 1 69.54kB 0B (0%) Build Cache 0 0 0B 0B
-
清理 Build Cache
docker system prune --volumes
这会清除所有:
- 停止的 Container
- 未被任何 Container 所使用的 Network
- 未被任何 Container 所使用的 Volume
- 无实例的 Image
- 无实例的 Build Cache
-
清理 Images
上一步中可能不会清理 Images,从而在
docker system df
中仍然能看到 Images 的空间占用。这一步可以清理这些 Images。查看所有的 Image
docker images -a
清理指定的 Image
docker rmi <IMAGE ID>