ubuntu

如何定期自动清理Ubuntu系统

小樊
34
2025-11-23 16:42:12
栏目: 智能运维

Ubuntu 定期自动清理系统实用方案

一 核心思路与准备

二 方案一 APT 自动维护(推荐)

三 方案二 Cron 自定义清理脚本(覆盖日志 临时文件 缩略图 回收站 旧内核)

#!/usr/bin/env bash
set -Eeuo pipefail

# 0) 安全路径与权限
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

# 1) APT 缓存与无用依赖
apt-get -y autoclean
apt-get -y autoremove --purge

# 2) systemd 日志:仅保留最近 7 天
journalctl --vacuum-time=7d 2>/dev/null || true

# 3) 临时文件(谨慎:仅在明确无业务写入 /tmp 时执行)
# find /tmp -mindepth 1 -mtime +1 -delete 2>/dev/null || true

# 4) 用户缩略图缓存(所有用户)
find /home -maxdepth 2 -type d -name '.cache' -path '*/.cache/thumbnails' -exec rm -rf {} + 2>/dev/null || true

# 5) 回收站(当前用户)
rm -rf "$HOME/.local/share/Trash/files/"* "$HOME/.local/share/Trash/info/"* 2>/dev/null || true

# 6) 旧内核(保留当前与最新 1 个旧版本)
current="$(uname -r)"
to_purge=""
# 匹配 linux-image 与 linux-headers,排除当前与最新 1 个旧版本
for pkg in $(dpkg -l | awk '/^ii/ && /linux-(image|headers)-[0-9]/ {print $2}' | sort -V); do
  if [[ "$pkg" == *"$current"* ]]; then
    continue
  fi
  # 简单策略:保留最新 1 个旧版本,其余标记为待删除
  if [[ -z "$keep_old" ]]; then
    keep_old="$pkg"
  else
    to_purge="$to_purge $pkg"
  fi
done
if [[ -n "$to_purge" ]]; then
  apt-get -y purge $to_purge
fi

exit 0

四 方案三 回收站与 Snap Flatpak 的自动清理

#!/usr/bin/env bash
set -Eeuo pipefail
snap list --all | awk '/disabled/{print $1, $3}' | while read snapname revision; do
  snap remove "$snapname" --revision "$revision" || true
done

五 注意事项与最佳实践

0
看了该问题的人还看了