温馨提示×

Linux系统清理:自动化脚本推荐

小樊
48
2025-11-01 06:08:05
栏目: 智能运维

Linux系统自动化清理脚本推荐

1. 基础系统清理脚本(APT/YUM/DNF通用)

此脚本覆盖临时文件、包管理器缓存、日志、旧内核等核心清理项,适用于大多数Linux发行版(Debian/Ubuntu/CentOS/Fedora)。

#!/bin/bash
# 基础系统清理脚本(支持APT/YUM/DNF)
# 功能:清理临时文件、包缓存、旧日志、旧内核

# 检查root权限
if [ "$(id -u)" -ne 0 ]; then
    echo "请使用root权限运行此脚本"
    exit 1
fi

# 清理临时文件(/tmp和/var/tmp)
echo "清理临时文件..."
rm -rf /tmp/* /var/tmp/*

# 清理包管理器缓存(根据系统类型选择)
if command -v apt-get &> /dev/null; then
    echo "清理APT缓存..."
    apt-get clean && apt-get autoclean
elif command -v yum &> /dev/null; then
    echo "清理YUM缓存..."
    yum clean all
elif command -v dnf &> /dev/null; then
    echo "清理DNF缓存..."
    dnf clean all
fi

# 清理旧日志(保留7天)
echo "清理旧日志..."
journalctl --vacuum-time=7d
find /var/log -type f -name "*.log" -mtime +7 -exec rm -f {} \;

# 清理旧内核(保留当前和上一个版本)
if command -v dpkg &> /dev/null; then
    echo "清理旧内核..."
    current_kernel=$(uname -r)
    apt-get purge $(dpkg -l linux-{image,headers}-* | awk '/^ii/{print $2}' | grep -vE "$current_kernel|$(echo $current_kernel | sed 's/-generic//')" | sort -u)
fi

echo "基础清理完成!"

2. 浏览器缓存专项清理脚本

针对Chrome/Firefox浏览器的缓存清理,避免浏览器文件占用过多空间。

#!/bin/bash
# 浏览器缓存清理脚本(支持Chrome/Firefox)
# 功能:清理用户目录下的浏览器缓存

# 遍历/home目录下的用户
for user in /home/*; do
    [ -d "$user" ] || continue
    username=$(basename "$user")
    echo "清理用户 $username 的浏览器缓存..."

    # 清理Chrome缓存
    if [ -d "$user/.cache/google-chrome/Default/Cache" ]; then
        rm -rf "$user/.cache/google-chrome/Default/Cache"
    fi
    if [ -d "$user/.cache/google-chrome/Default/Code Cache" ]; then
        rm -rf "$user/.cache/google-chrome/Default/Code Cache"
    fi

    # 清理Firefox缓存
    if [ -d "$user/.mozilla/firefox/*.default-release/cache2" ]; then
        rm -rf "$user/.mozilla/firefox/*.default-release/cache2"
    fi
done

echo "浏览器缓存清理完成!"

3. 大文件查找与清理脚本

通过find命令查找并清理大于指定大小的文件(如100MB),帮助释放大文件占用的空间。

#!/bin/bash
# 大文件查找与清理脚本
# 功能:查找并清理大于100MB的文件

# 设置查找目录和文件大小阈值(单位:MB)
TARGET_DIR="/"
SIZE_THRESHOLD=100

echo "查找 $TARGET_DIR 下大于 $SIZE_THRESHOLD MB的文件..."
find "$TARGET_DIR" -type f -size +"$SIZE_THRESHOLD"M -exec ls -lh {} \; | awk '{ print $9 ": " $5 }'

# 删除确认(取消注释以下行即可自动删除)
# find "$TARGET_DIR" -type f -size +"$SIZE_THRESHOLD"M -exec rm -f {} \; -exec echo "已删除: {}" \;
echo "大文件查找完成!"

4. 定时任务配置(Cron)

将清理脚本设置为定时任务,实现自动化运行(如每天凌晨3点执行)。

# 编辑当前用户的crontab
crontab -e

# 添加以下内容(每天凌晨3点执行清理脚本,路径替换为实际脚本路径)
0 3 * * * /usr/local/bin/cleanup_script.sh >> /var/log/cleanup.log 2>&1

5. 日志切割优化脚本(针对应用日志)

针对Nginx、Apache等应用日志,自动切割并清理超过指定天数的压缩日志。

#!/bin/bash
# 应用日志切割与清理脚本
# 功能:切割超过100M的日志文件,并清理30天前的压缩日志

LOG_DIR="/var/log/app"
MAX_SIZE="100M"
KEEP_DAYS=30

# 切割大日志文件
find "$LOG_DIR" -type f -name "*.log" -size +"$MAX_SIZE" -exec bash -c '
    file="$1"
    mv "$file" "$file.$(date +%Y%m%d%H%M%S)"
    gzip "$file.$(date +%Y%m%d%H%M%S)"
' _ {} \;

# 清理旧压缩日志
find "$LOG_DIR" -type f -name "*.gz" -mtime +"$KEEP_DAYS" -delete

echo "日志切割与清理完成!"

使用注意事项

  • 备份重要数据:清理前建议备份/home/etc等关键目录,防止误删。
  • 测试脚本:首次运行时建议注释rm命令,仅查看将要删除的文件,确认无误后再取消注释。
  • 权限控制:部分操作需要root权限,建议使用sudo运行脚本。
  • 定时任务管理:通过crontab -l查看当前用户的定时任务,crontab -e编辑任务。

以上脚本可根据实际需求调整(如修改清理阈值、添加清理项),建议定期检查脚本执行日志(如/var/log/cleanup.log),确保清理过程正常。

0