#!/bin/bash
# 記錄清理前的可用空間
before=$(df -h / | awk '/\// {print $4}')
# 清理yum快取
yum clean all
# 清理舊的日誌檔案
find /var/log -type f -name "*.log" -exec truncate --size 0 {} \;
# 清理回收站
echo "清空垃圾桶..."
rm -rf /root/.local/share/Trash/*/** &> /dev/null
# 清理歷史命令記錄
history -c
history -w
# 清理臨時檔案
rm -rf /tmp/*
rm -rf /var/tmp/*
# 清理舊的系統備份
rm -rf /var/backups/*
# 清理不再使用的軟體包和依賴項
yum autoremove -y
# 清理舊的核心
package-cleanup --oldkernels --count=1 -y
# 清理快取檔案
find /var/cache -type f -exec rm -rf {} \;
# 清理使用者快取
for user in $(ls /home); do
rm -rf /home/$user/.cache/*
done
# 清理郵件日誌
find /var/mail -type f -exec truncate --size 0 {} \;
# 清理core檔案
find / -name "core" -delete
# 清理舊的會話檔案
find /var/lib/php/session -type f -delete
# 清理系統郵件佇列
service postfix stop
rm -rf /var/spool/postfix/*
service postfix start
# 清理久未使用的軟體包快取
dnf clean packages -y
# 清理系統崩潰日誌
rm -rf /var/crash/*
# 清理journalctl日誌
journalctl --rotate
journalctl --vacuum-time=1d
# 清理系統快取
sync && echo 3 > /proc/sys/vm/drop_caches
# 清理歷史命令記錄
# history -c
# history -w
# 清理 Docker 容器日誌檔案
docker rm -v $(docker ps -a -q)
rm -rf /var/lib/docker/containers/*/*-json.log
# 清理 Docker 鏡像快取
docker image prune -a --force
# 清理 Docker 無用的資料卷
docker volume prune --force
# 清理舊的 Docker 鏡像
docker rmi $(docker images -f "dangling=true" -q)
# 計算清理了多少大小的檔案
cleared=$(df -h / | awk '/\// {print $4}' | awk -v before="$before" '{print before - $1}')
# 記錄清理後的可用空間
after=$(df -h / | awk '/\// {print $4}')
echo "清理前可用空間: $before"
echo "清理後可用空間: $after"
echo "磁碟清理完成。"