Linux系统自动化清理脚本推荐
此脚本覆盖临时文件、包管理器缓存、日志、旧内核等核心清理项,适用于大多数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 "基础清理完成!"
针对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 "浏览器缓存清理完成!"
通过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 "大文件查找完成!"
将清理脚本设置为定时任务,实现自动化运行(如每天凌晨3点执行)。
# 编辑当前用户的crontab
crontab -e
# 添加以下内容(每天凌晨3点执行清理脚本,路径替换为实际脚本路径)
0 3 * * * /usr/local/bin/cleanup_script.sh >> /var/log/cleanup.log 2>&1
针对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命令,仅查看将要删除的文件,确认无误后再取消注释。sudo运行脚本。crontab -l查看当前用户的定时任务,crontab -e编辑任务。以上脚本可根据实际需求调整(如修改清理阈值、添加清理项),建议定期检查脚本执行日志(如/var/log/cleanup.log),确保清理过程正常。