如何判断centos cleanup是否需要运行
导读:判断 CentOS Cleanup 是否需要运行的实用流程 一 快速判断清单 磁盘空间告急:运行 df -h,若根分区或关键挂载点(如 /、/var)可用空间低于约10%–20%,通常应立即执行清理。 日志占用异常:运行 du -h --...
判断 CentOS Cleanup 是否需要运行的实用流程
一 快速判断清单
- 磁盘空间告急:运行 df -h,若根分区或关键挂载点(如 /、/var)可用空间低于约10%–20%,通常应立即执行清理。
- 日志占用异常:运行 du -h --max-depth=1 /var/log,若 /var/log 或 /var/log/journal 体积很大,说明需要清理或调整轮转策略。
- 包管理缓存堆积:运行 yum repolist 或检查 /var/cache/yum 是否占用过多空间,必要时执行 yum clean all。
- 旧内核过多:运行 package-cleanup --oldkernels --count=2 的“预检”模式(或先查看 rpm -q kernel 列表),若保留的旧内核超过2–3个,建议清理。
- 孤立/无用包:运行 package-cleanup --quiet --leaves --exclude-bin,若输出较多“叶子包”,可考虑移除。
- 临时文件膨胀:检查 /tmp、/var/tmp 是否占用异常,必要时清理。
- 容器环境:若使用 Docker,运行 docker system df,若 Images/Volumes 占用高,需要执行 docker system prune 等维护。
以上检查能快速判断清理是否必要,并定位优先处理项。
二 关键指标与阈值示例
| 指标 | 观察方式 | 建议阈值 | 建议动作 |
|---|---|---|---|
| 根分区可用空间 | df -h | < 10%–20% | 立即清理日志、缓存、旧内核等 |
| /var/log 体积 | du -h --max-depth=1 /var/log | 明显偏大(如 > 1–5GB) | 调整 logrotate;清理 journal;压缩归档旧日志 |
| YUM 缓存 | du -sh /var/cache/yum 或 yum repolist | 占用数百 MB 以上 | 执行 yum clean all |
| 旧内核数量 | rpm -q kernel 或 package-cleanup --oldkernels --count=2 | > 2–3 个 | 仅保留最近 2 个内核 |
| systemd 日志 | journalctl --disk-usage | 接近或超过 500MB–1GB | journalctl --vacuum-time / --vacuum-size |
| Docker 资源 | docker system df | Images/Volumes 占用高 | docker system prune(-a/-f 视情况) |
| 上述阈值为运维中常用的经验值,可按业务容忍度微调。 |
三 一键判断脚本
#!/usr/bin/env bash
set -Eeuo pipefail
THRESHOLD_PERC=20
JOURNAL_MAX_SIZE="500M"
KERNEL_KEEP=2
need_cleanup=false
# 1) 磁盘空间
while IFS= read -r line;
do
usage=$(echo "$line" | awk '{
print $5}
' | tr -d '%')
mount=$(echo "$line" | awk '{
print $6}
')
if [[ $usage -ge $THRESHOLD_PERC ]];
then
echo "磁盘告警: $mount 已用 ${
usage}
% (阈值 ${
THRESHOLD_PERC}
%)"
need_cleanup=true
fi
done <
<
(df -h | awk 'NR>
1 &
&
$NF ~ /^\/$|\/var$/ {
print}
')
# 2) /var/log 体积
log_size=$(du -sh /var/log 2>
/dev/null | cut -f1)
echo "/var/log 体积: $log_size"
[[ $(echo "$log_size" | sed 's/G//;
s/M//') -gt 1024 ]] &
&
need_cleanup=true # >
1G 简单判定
# 3) YUM 缓存
cache_size=$(du -sh /var/cache/yum 2>
/dev/null | cut -f1)
echo "YUM 缓存: $cache_size"
[[ -n "$cache_size" ]] &
&
need_cleanup=true
# 4) 旧内核数量
if command -v package-cleanup >
/dev/null 2>
&
1;
then
old_kernels=$(package-cleanup --oldkernels --count=$((KERNEL_KEEP+1)) 2>
/dev/null | wc -l)
if [[ $old_kernels -gt 0 ]];
then
echo "旧内核数量超过 $KERNEL_KEEP 个"
need_cleanup=true
fi
fi
# 5) systemd 日志
if command -v journalctl >
/dev/null 2>
&
1;
then
journal_usage=$(journalctl --disk-usage | sed -n 's/.*\([0-9.]\+[A-Z]\).*/\1/p')
echo "journal 日志占用: ${
journal_usage:-未知}
"
need_cleanup=true
fi
# 6) Docker
if command -v docker >
/dev/null 2>
&
1 &
&
docker info >
/dev/null 2>
&
1;
then
docker_df=$(docker system df --format '{
{
.TotalCount}
}
{
{
.Size}
}
' | head -n1)
echo "Docker 资源: $docker_df"
need_cleanup=true
fi
if $need_cleanup;
then
echo "结论: 建议立即运行 cleanup(磁盘/日志/缓存/旧内核等需要维护)"
exit 0
else
echo "结论: 当前无需紧急 cleanup"
exit 1
fi
说明:阈值可按需调整;该脚本仅做“是否需要”的判定,不执行实际删除操作。
四 需要运行时的安全清理顺序
- 日志系统
- 轮转并压缩旧日志:执行 logrotate -f /etc/logrotate.conf;为关键目录配置合理的 /etc/logrotate.d/ 策略(如保留7天、压缩、延迟压缩)。
- 清理 systemd 日志:先 journalctl --rotate,再按时间或大小收缩,例如 journalctl --vacuum-time=2weeks 或 –vacuum-size=500M。
- 包管理缓存与无用包
- 清理缓存:yum clean all。
- 删除旧内核:仅保留最近 2 个,例如 package-cleanup --oldkernels --count=2。
- 清理孤立/无用包:package-cleanup --quiet --leaves --exclude-bin(确认列表后再移除)。
- 临时文件与可回收内存
- 清理临时目录:rm -rf /tmp/ /var/tmp/*(按需)*。
- 释放页面/缓存(不影响数据安全,仅释放可回收页):sync & & echo 3 > /proc/sys/vm/drop_caches。
- 容器环境
- 资源回收:docker system prune -af --volumes(谨慎,会删除停止容器、悬挂镜像和无用卷)。
以上操作按“日志 → 包管理 → 临时文件 → 容器”的顺序执行,更安全且可逐步观察空间回收效果。
- 资源回收:docker system prune -af --volumes(谨慎,会删除停止容器、悬挂镜像和无用卷)。
五 何时不必运行与后续预防
- 不必立即运行的情形
- 所有关键分区可用空间高于 20%;/var/log 与 journal 占用在可接受范围;YUM 缓存正常;旧内核不超过 2–3 个;Docker 资源使用合理。
- 预防建议
- 启用并验证 logrotate 策略(如 daily、rotate 7、compress、delaycompress、missingok、notifempty),必要时手动触发一次以校验。
- 将常规维护脚本加入 cron(如每日清理临时文件、每周执行 yum clean、按策略清理旧日志),示例:0 3 * * * /path/to/cleanup.sh。
- 对 journal 设置持久化与大小上限(如 /etc/systemd/journald.conf 中 SystemMaxUse=),避免无限增长。
- 对 Docker 建立定期 prune 与镜像生命周期管理。
通过预防性配置与定时维护,可显著降低“临时抱佛脚式”大清理的频率与风险。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何判断centos cleanup是否需要运行
本文地址: https://pptw.com/jishu/770115.html
