前言
一个简单的脚本用来清理磁盘空间,可以手动运行或者定时自动运行,只测试了 Ubuntu。
创建脚本文件
1
| sudo vim /usr/local/bin/cleanup.sh
|
写入脚本内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
| #!/bin/bash
echo "🔧 开始执行系统清理任务..."
# 记录清理前可用空间(以字节为单位) before=$(df --output=avail -B1 / | tail -n1 | tr -d '[:space:]')
## 1. APT 缓存 echo "🧹 清理 apt 缓存..." sudo apt-get clean sudo apt-get autoclean sudo apt-get autoremove -y
## 2. 日志文件 echo "🧹 清理系统日志..." sudo journalctl --vacuum-time=7d # 只保留 7 天日志 sudo find /var/log -type f -name "*.log" -exec truncate -s 0 {} \;
## 3. 临时文件 echo "🧹 清理 /tmp..." sudo rm -rf /tmp/*
## 4. Snap 老版本(如果使用了 snap) if command -v snap &>/dev/null; then echo "🧹 清理 snap 老版本..." sudo snap list --all | awk '/disabled/{print $1, $2}' | \ while read snapname revision; do sudo snap remove "$snapname" --revision="$revision" done fi
## 5. Docker 清理(安全模式,不删除 volume) if command -v docker &>/dev/null; then echo "🧹 清理 Docker..." sudo docker system prune -af fi
# 记录清理后可用空间(以字节为单位) after=$(df --output=avail -B1 / | tail -n1 | tr -d '[:space:]')
# 计算释放的空间(以字节为单位) released=$((after - before))
if [ "$released" -le 0 ]; then echo "✨ 系统清理完成!未释放可用空间(可能是并发写入或无可清理项)。" else # 转换成合适的单位(释放空间) if [ "$released" -lt 1024 ]; then released_human="未释放可用空间" elif [ "$released" -lt 1048576 ]; then released_human=$(awk "BEGIN {printf \"%.2f KB\", $released/1024}") elif [ "$released" -lt 1073741824 ]; then released_human=$(awk "BEGIN {printf \"%.2f MB\", $released/1024/1024}") else released_human=$(awk "BEGIN {printf \"%.2f GB\", $released/1024/1024/1024}") fi
# 转换成合适的单位(当前可用空间) if [ "$after" -ge 1073741824 ]; then after_human=$(awk "BEGIN {printf \"%.2f GB\", $after/1024/1024/1024}") elif [ "$after" -ge 1048576 ]; then after_human=$(awk "BEGIN {printf \"%.2f MB\", $after/1024/1024}") else after_human=$(awk "BEGIN {printf \"%.2f KB\", $after/1024}") fi
if [ "$released_human" = "未释放可用空间" ]; then echo "✨ 系统清理完成!未释放可用空间。" else echo "✨ 系统清理完成!释放空间:${released_human}" echo "💾 当前可用空间:${after_human}" fi fi
|
赋权
1
| sudo chmod +x /usr/local/bin/cleanup.sh
|
手动运行脚本
定时运行脚本
1
| 0 3 * * 0 /usr/local/bin/cleanup.sh >> /var/log/cleanup.log 2>&1
|
后记
- 每周日凌晨 3:00 执行脚本
- 执行过程会记录到 /var/log/cleanup.log
- 如果需要改频率,只需要调整前面的 0 3 * * 0