首页主机资讯centos系统如何自动清理垃圾文件

centos系统如何自动清理垃圾文件

时间2025-11-18 14:54:04发布访客分类主机资讯浏览700
导读:CentOS 自动清理垃圾文件的实用方案 一 核心清理项与推荐做法 使用 systemd-journald 自动维护日志:仅保留最近 1 周 或限制最大 500MB,避免 journal 无限增长。 清理包管理器缓存:执行 yum cle...

CentOS 自动清理垃圾文件的实用方案

一 核心清理项与推荐做法

  • 使用 systemd-journald 自动维护日志:仅保留最近 1 周 或限制最大 500MB,避免 journal 无限增长。
  • 清理包管理器缓存:执行 yum clean alldnf clean all,回收 /var/cache 空间。
  • 清理临时文件:按需清理 /tmp/var/tmp,避免占用根分区。
  • 清理旧内核:使用 package-cleanup --oldkernels --count=1(保留最新 1 个内核),释放 /boot。
  • 清理孤立包:使用 package-cleanup --quiet --leaves --exclude-bin,移除不再被依赖的包。
  • 可选图形化工具:安装 BleachBit(支持 CLI),批量清理浏览器缓存、系统临时文件等。
    以上操作均为常见且安全的系统维护动作,建议纳入例行维护计划。

二 自动化方案一 systemd 定时器清理 journal

  • 创建定时器与清理服务(无需手写复杂脚本):
    1. 新建服务单元:/etc/systemd/system/journal-cleanup.service
    [Unit]
    Description=Clean up journal logs
    After=systemd-journald.service
    
    [Service]
    Type=oneshot
    ExecStart=/usr/bin/journalctl --vacuum-time=1w
    ExecStart=/usr/bin/journalctl --vacuum-size=500M
    
    1. 新建定时器单元:/etc/systemd/system/journal-cleanup.timer
    [Unit]
    Description=Run journal cleanup daily
    Requires=journal-cleanup.service
    
    [Timer]
    OnCalendar=daily
    AccuracySec=1h
    Persistent=true
    
    [Install]
    WantedBy=timers.target
    
    1. 启用并启动:
    systemctl daemon-reload
    systemctl enable --now journal-cleanup.timer
    
    1. 常用查看与验证:
    systemctl list-timers journal-cleanup.timer
    journalctl --disk-usage
    

该方案由 systemd 托管,稳定可靠,适合长期自动运行。

三 自动化方案二 Shell 脚本 + cron 定时任务

  • 示例脚本 /usr/local/sbin/cleanup.sh(可按需增删清理项):
#!/bin/bash
set -e

# 仅允许 root 执行
[ "$(id -u)" -ne 0 ] &
    &
 {
     echo "请使用 root 执行";
     exit 1;
 }
    

# 1) 清理 YUM/DNF 缓存
if command -v dnf >
    /dev/null 2>
    &
    1;
     then
  dnf clean all
elif command -v yum >
    /dev/null 2>
    &
    1;
     then
  yum clean all
fi

# 2) 清理临时文件(谨慎:确保无业务正在使用)
rm -rf /tmp/*
rm -rf /var/tmp/*

# 3) 清理旧日志(示例:/var/log 下 30 天前的 *.log)
find /var/log -type f -name "*.log" -mtime +30 -delete 2>
/dev/null || true

# 4) 清理过大的 nohup.out(示例:超过 100MB 则清空内容)
find /data /root /home /mnt -name 'nohup.out' -type f -size +100M -exec sh -c '
  [ -s "{
}
    " ] &
    &
     echo "" >
 "{
}
    "
' \;
     2>
    /dev/null || true

# 5) 清理旧内核(保留最新 1 个)
if command -v package-cleanup >
    /dev/null 2>
    &
    1;
     then
  package-cleanup --oldkernels --count=1 || true
fi

# 6) 清理孤立包
if command -v package-cleanup >
    /dev/null 2>
    &
    1;
     then
  package-cleanup --quiet --leaves --exclude-bin || true
fi

# 7) 可选:清理用户回收站(多用户环境按需启用)
# find /home -path '*/.local/share/Trash/*' -delete 2>
    /dev/null || true

exit 0
  • 赋权并配置每日 03:00 执行:
chmod +x /usr/local/sbin/cleanup.sh
crontab -e
# 添加一行:
0 3 * * * /usr/local/sbin/cleanup.sh >
    >
     /var/log/cleanup.log 2>
    &
    1
  • 常用验证:
crontab -l
systemctl status crond
tail -f /var/log/cleanup.log

该方案灵活可扩展,适合需要自定义清理策略的场景。

四 安全与验证要点

  • 优先使用“截断/轮转”而非粗暴删除:如 journalctl --vacuum-time/size、日志轮转 logrotate,减少对正在运行服务的影响。
  • 清理 /tmp/var/tmp 前确认无业务写入;必要时先停服务或改用安全删除策略。
  • 清理包缓存与旧内核前,确保已保留至少一个可用内核,避免更新后无法启动。
  • 谨慎操作内存缓存:仅在必要时执行 sync & & echo 3 > /proc/sys/vm/drop_caches,避免影响性能。
  • 建议将清理动作写入日志(如 /var/log/cleanup.log),并定期审计;对关键数据做好备份。
    以上做法有助于降低风险、提升可维护性与可追溯性。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: centos系统如何自动清理垃圾文件
本文地址: https://pptw.com/jishu/750151.html
怎样检查centos中的磁盘碎片 centos如何清理不必要的启动项

游客 回复需填写必要信息