首页主机资讯如何判断centos cleanup是否需要运行

如何判断centos cleanup是否需要运行

时间2025-12-12 02:38:03发布访客分类主机资讯浏览1177
导读:判断 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(谨慎,会删除停止容器、悬挂镜像和无用卷)。
      以上操作按“日志 → 包管理 → 临时文件 → 容器”的顺序执行,更安全且可逐步观察空间回收效果。

五 何时不必运行与后续预防

  • 不必立即运行的情形
    • 所有关键分区可用空间高于 20%/var/logjournal 占用在可接受范围;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
centos cleanup能解决哪些常见问题 centos cleanup与系统更新有何关联

游客 回复需填写必要信息