本文目录导读:

我为您提供几种Shell脚本定时清理系统垃圾文件的方法:
基础清理脚本
#!/bin/bash
# 系统垃圾文件清理脚本
echo "开始清理系统垃圾文件..."
# 清理系统日志
sudo journalctl --vacuum-time=3d
sudo find /var/log -name "*.log" -mtime +7 -exec rm -f {} \;
# 清理临时文件
sudo rm -rf /tmp/*
sudo rm -rf /var/tmp/*
# 清理包管理器缓存 (Ubuntu/Debian)
if command -v apt-get &> /dev/null; then
sudo apt-get clean
sudo apt-get autoclean
sudo apt-get autoremove -y
fi
# 清理包管理器缓存 (CentOS/RHEL)
if command -v yum &> /dev/null; then
sudo yum clean all
fi
# 清理Docker资源 (如果安装了Docker)
if command -v docker &> /dev/null; then
docker system prune -f
fi
# 清理用户缓存
rm -rf ~/.cache/*
# 清理缩略图缓存
rm -rf ~/.thumbnails/* 2>/dev/null
rm -rf ~/.cache/thumbnails/* 2>/dev/null
echo "清理完成!"
使用cron定时任务
设置每天凌晨2点执行清理
# 编辑crontab crontab -e # 添加以下行(每天凌晨2点执行) 0 2 * * * /path/to/cleanup_script.sh # 或者每小时的30分执行 30 * * * * /path/to/cleanup_script.sh
更详细的cron时间配置
# 语法:分 时 日 月 周 命令 # 每天0点执行 0 0 * * * /path/to/script.sh # 每周一凌晨3点执行 0 3 * * 1 /path/to/script.sh # 每月1号凌晨4点执行 0 4 1 * * /path/to/script.sh # 每15分钟执行一次 */15 * * * * /path/to/script.sh
完整的自动化清理方案
#!/bin/bash
# 完整的系统清理脚本
LOG_FILE="/var/log/cleanup_$(date +%Y%m%d).log"
MIN_DISK_SPACE=10 # 最低磁盘空间百分比
# 日志函数
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a $LOG_FILE
}
# 检查磁盘空间
check_disk_space() {
local usage=$(df / | awk 'NR==2 {print $5}' | sed 's/%//')
if [ $usage -gt $((100 - MIN_DISK_SPACE)) ]; then
log "警告: 磁盘使用率已达到 ${usage}%"
log "执行深度清理..."
return 0
else
log "当前磁盘使用率: ${usage}%,正常范围内"
return 1
fi
}
# 清理系统日志
clean_logs() {
log "清理系统日志..."
sudo journalctl --vacuum-time=2d &>/dev/null
sudo find /var/log -name "*.log" -mtime +3 -delete
sudo find /var/log -name "*.gz" -mtime +3 -delete
log "系统日志清理完成"
}
# 清理临时文件
clean_temp() {
log "清理临时文件..."
sudo find /tmp -type f -atime +1 -delete 2>/dev/null
sudo find /var/tmp -type f -atime +1 -delete 2>/dev/null
log "临时文件清理完成"
}
# 清理软件包缓存
clean_packages() {
log "清理软件包缓存..."
if command -v apt &> /dev/null; then
sudo apt-get clean
sudo apt-get autoclean
elif command -v yum &> /dev/null; then
sudo yum clean all
fi
log "软件包缓存清理完成"
}
# 清理旧内核 (Debian/Ubuntu)
clean_old_kernels() {
if command -v apt &> /dev/null; then
log "清理旧内核..."
sudo apt-get autoremove --purge -y &>/dev/null
fi
}
# 主清理函数
main_cleanup() {
log "===== 开始系统清理 ====="
# 检查是否需要深度清理
check_disk_space
need_deep=$?
clean_logs
clean_temp
clean_packages
if [ $need_deep -eq 0 ]; then
clean_old_kernels
# 深度清理时同时清理Docker
if command -v docker &> /dev/null; then
docker system prune -a -f &>/dev/null
fi
fi
final_usage=$(df / | awk 'NR==2 {print $5}' | sed 's/%//')
log "清理完成,当前磁盘使用率: ${final_usage}%"
log "===== 清理结束 ====="
}
# 执行主清理
main_cleanup
设置systemd定时任务(替代cron)
# 创建service文件 sudo nano /etc/systemd/system/system-cleanup.service
[Unit] Description=System Cleanup Service [Service] Type=oneshot ExecStart=/path/to/cleanup_script.sh User=root
# 创建timer文件 sudo nano /etc/systemd/system/system-cleanup.timer
[Unit] Description=Run system cleanup every day at 3am [Timer] OnCalendar=daily OnCalendar=*-*-* 03:00:00 Persistent=true [Install] WantedBy=timers.target
# 启用定时器 sudo systemctl enable system-cleanup.timer sudo systemctl start system-cleanup.timer
使用注意事项
- 权限管理:某些操作需要root权限,使用
sudo - 日志记录:建议将清理操作记录到日志文件
- 磁盘空间监控:在清理前检查磁盘使用情况
- 安全考虑:
- 不要删除不确定的文件
- 保留近期日志文件
- 谨慎使用
rm -rf命令
快速部署示例
# 1. 创建脚本 sudo nano /usr/local/bin/cleanup.sh # 粘贴上面第3部分的完整脚本 # 2. 添加执行权限 sudo chmod +x /usr/local/bin/cleanup.sh # 3. 设置定时任务 crontab -e # 添加:0 3 * * * /usr/local/bin/cleanup.sh # 4. 手动测试 sudo /usr/local/bin/cleanup.sh
这样配置后,系统就会按照设定的时间自动清理垃圾文件了。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播