centos系统如何自动清理垃圾文件
导读:CentOS 自动清理垃圾文件的实用方案 一 核心清理项与推荐做法 使用 systemd-journald 自动维护日志:仅保留最近 1 周 或限制最大 500MB,避免 journal 无限增长。 清理包管理器缓存:执行 yum cle...
CentOS 自动清理垃圾文件的实用方案
一 核心清理项与推荐做法
- 使用 systemd-journald 自动维护日志:仅保留最近 1 周 或限制最大 500MB,避免 journal 无限增长。
- 清理包管理器缓存:执行 yum clean all 或 dnf clean all,回收 /var/cache 空间。
- 清理临时文件:按需清理 /tmp 与 /var/tmp,避免占用根分区。
- 清理旧内核:使用 package-cleanup --oldkernels --count=1(保留最新 1 个内核),释放 /boot。
- 清理孤立包:使用 package-cleanup --quiet --leaves --exclude-bin,移除不再被依赖的包。
- 可选图形化工具:安装 BleachBit(支持 CLI),批量清理浏览器缓存、系统临时文件等。
以上操作均为常见且安全的系统维护动作,建议纳入例行维护计划。
二 自动化方案一 systemd 定时器清理 journal
- 创建定时器与清理服务(无需手写复杂脚本):
- 新建服务单元:/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- 新建定时器单元:/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- 启用并启动:
systemctl daemon-reload systemctl enable --now journal-cleanup.timer- 常用查看与验证:
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
