由于作者购买的 VPS 硬盘太小经常由于磁盘爆满报错,发现长时间运行 Linux 会记录太多时间过于久远的日志。本文以 debian / archlinux 以及 systemd 系的通用 linux 命令为例,记录整理一些可以删除的较大日志文件。
# 检查磁盘空间
h
- 使用 du 命令查找
/
目录哪些文件和目录占用了大量空间:
h | sudo du -h --max-depth=1 / | sort -hr | head -n 10 |
h | sudo du -h --max-depth=1 /var | sort -hr | head -n 10 |
| |
| |
| du -h --max-depth=1 ~ | sort -hr | head -n 10 |
# journal(systemd 日志)
/var/log/journal
目录中的日志文件可能占用了大量空间。你可以清理这些文件。
- 将日志文件归档或删除:
h | sudo journalctl --vacuum-time=1d |
- 根据磁盘空间限制清理:
h | sudo journalctl --vacuum-size=100M |
- 禁用
systemd
的持久化日志:
h | sudo rm -rf /var/log/journal |
- 限制 journal 的大小:
h | sudo nano /etc/systemd/journald.conf |
- 将以下行取消注释并设置合适的大小限制(比如 50M):
h
- 禁用 systemd 的持久化日志
h
- 保存文件后重启 systemd-journald 服务:
h | sudo systemctl restart systemd-journald |
# docker
# 配置
- 编辑 Docker 配置文件:
h | sudo nano /etc/docker/daemon.json |
- 添加或修改以下内容:
n | { |
| "log-driver": "json-file", |
| "log-opts": { |
| "max-size": "10m", |
| "max-file": "3" |
| } |
| } |
- 重启 Docker 服务:
h | sudo systemctl restart docker |
# 清理
- 使用以下命令可以删除未使用的镜像、容器、网络和数据卷:
h | sudo docker system prune -a |
- 如果只想清理未使用的数据卷,可以使用:
h
- 如果你的构建过程中积累了大量的构建缓存,可以通过以下命令清理:
h | sudo docker builder prune |
# Linux 内核
# debian
目前作者长期使用中的系统之一 (Debian),升级会产生多个内核,旧版内核会保留一些,需要手动删除。Ubuntu 和 Deepin 没用过暂时不知。
h | dpkg --list | grep linux-image |
| sudo apt-get remove --purge linux-image-<version> |
# archlinux
目前作者长期使用中的系统之一 (Archlinux / Manjaro) 依稀记得 Manjaro 是可以存在多个内核,Archlinux 在更新后会自动删除旧的内核,Archlinux 可能不需要特别清理。
h