由于作者购买的 VPS 硬盘太小经常由于磁盘爆满报错,发现长时间运行 Linux 会记录太多时间过于久远的日志。本文以 debian / archlinux 以及 systemd 系的通用 linux 命令为例,记录整理一些可以删除的较大日志文件。

# 检查磁盘空间

  • 检查磁盘空间
h
df -h
  • 使用 du 命令查找 / 目录哪些文件和目录占用了大量空间:
h
sudo du -h --max-depth=1 / | sort -hr | head -n 10
  • 例:
    • 检查 /var 目录
    • 检查用户目录下的文件
h
sudo du -h --max-depth=1 /var | sort -hr | head -n 10
## home 目录不需要 sudo
du -h --max-depth=1 ~ | sort -hr | head -n 10

# journal(systemd 日志)

/var/log/journal 目录中的日志文件可能占用了大量空间。你可以清理这些文件。

  1. 将日志文件归档或删除:
h
sudo journalctl --vacuum-time=1d
  1. 根据磁盘空间限制清理:
h
sudo journalctl --vacuum-size=100M
  1. 禁用 systemd 的持久化日志:
h
sudo rm -rf /var/log/journal
  1. 限制 journal 的大小:
h
sudo nano /etc/systemd/journald.conf
  1. 将以下行取消注释并设置合适的大小限制(比如 50M):
h
SystemMaxUse=50M
  1. 禁用 systemd 的持久化日志
h
Storage=volatile
  1. 保存文件后重启 systemd-journald 服务:
h
sudo systemctl restart systemd-journald

# docker

# 配置

  1. 编辑 Docker 配置文件:
h
sudo nano /etc/docker/daemon.json
  1. 添加或修改以下内容:
n
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}
  1. 重启 Docker 服务:
h
sudo systemctl restart docker

# 清理

  1. 使用以下命令可以删除未使用的镜像、容器、网络和数据卷:
h
sudo docker system prune -a
  1. 如果只想清理未使用的数据卷,可以使用:
h
sudo docker volume prune
  1. 如果你的构建过程中积累了大量的构建缓存,可以通过以下命令清理:
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
pacman -Q | grep linux

*~( ̄▽ ̄)~[お茶]を一杯ください

Cyclone WeChat 支払う

WeChat 支払う

Cyclone Alipay

Alipay