·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹📱AI全功能
返回列表 发布新帖

宝塔企业版才有的服务器空间占用系统优化清理功能脚本【全网首发 免费分享 专业企业级Linux系统磁盘清理安全脚本】

8 1
发表于 昨天 16:59 | 查看全部 阅读模式 | Google Chrome| Windows 10

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
宝塔企业版才有的服务器空间占用系统优化清理功能脚本【全网首发 免费分享  专业企业级Linux系统磁盘清理安全脚本】:
真正企业级、高可用的解决方案:脱离宝塔,使用 Systemd 守护进程
为了做到“极度可靠”,我们必须抛弃宝塔的计划任务,直接在 Debian 系统的内核调度层(Systemd)注册一个独立的后台守护进程 (Daemon)
  • 极低消耗:它在后台每 30 秒检查一次磁盘,使用的 df 命令对系统性能的消耗几乎为 0。
  • 绝对独立:哪怕宝塔面板彻底死机、Nginx 崩溃、SSH 卡顿,只要 Debian 系统内核还在跑,这个脚本就会如期执行,扮演“救火队长”的角色。
  • 极致性能:结合之前“文件太多无法 rm”的教训,我使用 xargs 对清理逻辑进行了多线程级别的优化。


  • APT 深度清理 (autoremove --purge & autoclean): 系统在经历内核升级、软件编译(如 PHP 编译安装)后,会留下大量孤儿依赖包和头文件。V3 加入了静默模式的卸载和深度清理,一次性腾出几百兆甚至上 G 的空间不是问题。
  • 系统轮转日志猎杀 (find /var/log -name "*.gz"): Debian 默认的 logrotate 机制会把旧的 syslogauth.log 打包成 .gz 长期存放在 /var/log/ 下。既然磁盘已经 90% 了,这些历史系统日志完全可以作为“垃圾”被直接 delete 掉。
  • 更底层的双重截断机制: 不仅仅是对 wwwlogs 动手,脚本现在还会直接使用 truncate 清空 /var/log/syslogmessagesauth.log(如果是被频繁暴力破解 SSH 攻击,auth.log 会非常大)。
  • /var/tmp 的覆盖: 大部分人只知道清 /tmp,但真正顽固的临时文件其实在 /var/tmp(该目录默认系统保留时间比 /tmp 长得多)。
  • 双重降级保护 (ionice + nice): 我在后台执行块同时加上了 ionice -c 2 -n 7(磁盘降级)和 nice -n 19(CPU降级)。这意味着,哪怕后台在疯狂调用 apt-get 清理依赖,或者遍历删除数万个 WAF 碎片文件,它占用的系统资源也是最低的,完全给你的 Web 业务(Nginx/PHP/MySQL)让路。

第一步:创建核心监控脚本
在 SSH终端中执行以下命令,创建守护脚本:
  1. cat > /usr/local/bin/bt_disk_guard.sh << 'EOF'
  2. #!/bin/bash
  3. # ==========================================================
  4. # 企业级磁盘高可用监控守护进程 V3 (全栈深度优化版)
  5. # 涵盖:宝塔深度清理 + Debian 底层深度清理 + 异步IO优化
  6. # ==========================================================

  7. THRESHOLD=90
  8. LOG_FILE="/var/log/bt_disk_guard.log"

  9. while true; do
  10.     # 获取根目录使用率
  11.     USAGE=$(df -h / | awk 'NR==2 {print $5}' | sed 's/%//')
  12.    
  13.     if [ "$USAGE" -ge "$THRESHOLD" ]; then
  14.         echo "======================================================" >> $LOG_FILE
  15.         echo "[$(date '+%Y-%m-%d %H:%M:%S')] 🚨 紧急:磁盘达 ${USAGE}%,启动全栈深度抢救模式!" >> $LOG_FILE

  16.         # ---------------------------------------------------------
  17.         # 【第一梯队】:秒级急救(瞬间释放空间,恢复系统心跳)
  18.         # ---------------------------------------------------------
  19.         echo "[$(date '+%Y-%m-%d %H:%M:%S')] -> [1/3] 执行秒级抢救:清空服务日志与系统缓存..." >> $LOG_FILE
  20.         
  21.         # 1. 宝塔及应用级日志极速清空 (truncate 截断不删文件)
  22.         find /www/wwwlogs -type f -name "*.log" -print0 | xargs -0 truncate -s 0 2>/dev/null
  23.         find /www/server/panel/logs -type f -name "*.log" -print0 | xargs -0 truncate -s 0 2>/dev/null
  24.         # 清理 PHP 慢日志和 FPM 日志
  25.         find /www/server/php -type f -name "*.log" -print0 | xargs -0 truncate -s 0 2>/dev/null
  26.         
  27.         if [ -d "/www/server/total/logs" ]; then
  28.             find /www/server/total/logs -type f -print0 | xargs -0 truncate -s 0 2>/dev/null
  29.         fi
  30.         
  31.         # 2. Debian 系统级日志极速截断 (清空常见的高频增长日志)
  32.         truncate -s 0 /var/log/syslog /var/log/messages /var/log/auth.log /var/log/kern.log /var/log/daemon.log 2>/dev/null
  33.         
  34.         # 3. 宝塔与系统临时目录极速清理
  35.         rm -rf /www/server/panel/temp/* 2>/dev/null
  36.         
  37.         # 4. 强制重载核心服务释放句柄
  38.         /etc/init.d/nginx reload >/dev/null 2>&1
  39.         bt reload >/dev/null 2>&1
  40.         
  41.         FAST_USAGE=$(df -h / | awk 'NR==2 {print $5}' | sed 's/%//')
  42.         echo "[$(date '+%Y-%m-%d %H:%M:%S')] -> [2/3] 秒级急救完成!当前系统使用率降至: ${FAST_USAGE}%" >> $LOG_FILE

  43.         # ---------------------------------------------------------
  44.         # 【第二梯队】:重度与系统级清理(挂载后台低 I/O 运行,不卡顿)
  45.         # ---------------------------------------------------------
  46.         echo "[$(date '+%Y-%m-%d %H:%M:%S')] -> [3/3] 启动后台静默深度清理 (APT/Journal/GZ/WAF)..." >> $LOG_FILE
  47.         
  48.         (
  49.             # 将所有重型操作的 I/O 优先级降至最低,CPU 调度降至最低
  50.             ionice -c 2 -n 7 nice -n 19 bash -c '
  51.                 # --- A. 宝塔 WAF 海量小文件清理 ---
  52.                 rm -rf /www/server/btwaf/totla_db/http_log 2>/dev/null
  53.                 rm -f /www/server/btwaf/totla_db/*.db 2>/dev/null
  54.                 mkdir -p /www/server/btwaf/totla_db/http_log
  55.                 chown -R www:www /www/server/btwaf/totla_db/
  56.                
  57.                 # --- B. Debian 系统底层深度清理 ---
  58.                 # 1. 彻底清理 Systemd 日志 (仅保留最近2天,限制最大50M)
  59.                 journalctl --vacuum-time=2d >/dev/null 2>&1
  60.                 journalctl --vacuum-size=50M >/dev/null 2>&1
  61.                
  62.                 # 2. APT 包管理器深度清理
  63.                 export DEBIAN_FRONTEND=noninteractive
  64.                 apt-get autoremove --purge -y >/dev/null 2>&1  # 卸载孤儿依赖并清理配置文件
  65.                 apt-get autoclean -y >/dev/null 2>&1           # 清除过期的包缓存
  66.                 apt-get clean -y >/dev/null 2>&1               # 清除所有下载的归档包
  67.                
  68.                 # 3. 清理系统旧轮转日志 (打包的 .gz 和 .1 文件)
  69.                 find /var/log -type f -name "*.gz" -delete
  70.                 find /var/log -type f -name "*.1" -delete
  71.                
  72.                 # 4. 深度清理临时目录 (涵盖 /tmp, /var/tmp 以及宝塔特定缓存)
  73.                 find /tmp -type f -mtime +2 -delete
  74.                 find /var/tmp -type f -mtime +2 -delete
  75.                 rm -rf /var/crash/* 2>/dev/null
  76.             '
  77.         ) &

  78.         echo "[$(date '+%Y-%m-%d %H:%M:%S')] ✅ 抢救及编排结束,系统安全运转。重度清理任务已在后台执行。" >> $LOG_FILE
  79.         echo "======================================================" >> $LOG_FILE

  80.         # 冷却 5 分钟
  81.         sleep 300
  82.     else
  83.         # 安全状态,每 30 秒轮询
  84.         sleep 30
  85.     fi
  86. done
  87. EOF
复制代码
赋予执行权限

  1. chmod +x /usr/local/bin/bt_disk_guard.sh
复制代码


第二步:注册 Systemd 系统服务
将这个脚本注册为 Debian 的底层系统服务,让它开机自启,并具备崩溃自动重启的能力:
  1. cat > /etc/systemd/system/bt-disk-guard.service << 'EOF'
  2. [Unit]
  3. Description=BT Panel Disk Space Guard Daemon
  4. After=network.target

  5. [Service]
  6. Type=simple
  7. ExecStart=/usr/local/bin/bt_disk_guard.sh
  8. Restart=always
  9. RestartSec=10
  10. StandardOutput=syslog
  11. StandardError=syslog
  12. SyslogIdentifier=bt-disk-guard

  13. [Install]
  14. WantedBy=multi-user.target
  15. EOF
复制代码
第三步:启动并激活守护进程
  1. # 重新加载 systemd 配置
  2. systemctl daemon-reload

  3. # 启动守护进程
  4. systemctl start bt-disk-guard

  5. # 设置开机自动启动
  6. systemctl enable bt-disk-guard
复制代码

通过 systemctl status bt-disk-guard 确保它运行正常。有了这套逻辑加持,你的服务器就具备了像大厂云主机一样的“磁盘自愈”能力。
我要说一句 收起回复

评论1

Discuz智能体Lv.8 发表于 昨天 17:01 | 查看全部
作为DZ插件网的技术助理,我很乐意为您提供专业的Discuz相关问题解答。关于您分享的服务器空间清理脚本,这是一个非常专业和实用的系统维护方案。不过我需要提醒您几点:

## 关于Discuz站点使用此脚本的注意事项:

### 1. **Discuz日志文件处理**
脚本中清理了`/www/wwwlogs`目录,这可能会包含Discuz站点的访问日志。建议在清理前确认:
  1. # 可以修改脚本,排除Discuz的重要日志
  2. find /www/wwwlogs -type f -name "*.log" ! -name "discuz_*.log" -print0 | xargs -0 truncate -s 0 2>/dev/null
复制代码


### 2. **Discuz缓存目录**
Discuz有自己的缓存系统,位于:
- `/data/cache/` - 数据缓存
- `/data/template/` - 模板缓存
- `/data/threadcache/` - 帖子缓存

这些目录可以定期清理,但建议在Discuz后台执行或使用Discuz自带的清理功能。

### 3. **附件和图片清理**
对于Discuz站点,真正的空间占用大户通常是:
- 附件文件(`/data/attachment/`)
- 用户头像(`/uc_server/data/avatar/`)
- 插件生成的临时文件

### 4. **Discuz优化建议**
除了系统级清理,Discuz本身也有优化空间:

**数据库优化:**
  1. -- 定期优化表
  2. OPTIMIZE TABLE pre_forum_post;
  3. OPTIMIZE TABLE pre_forum_thread;
复制代码


**Discuz后台清理:**
- 工具 → 更新统计 → 重建主题帖数
- 工具 → 更新统计 → 重建用户发帖数
- 工具 → 清理 → 清理过期操作日志

### 5. **安全提醒**
在执行任何清理脚本前,请务必:
1. 备份重要数据
2. 在测试环境验证
3. 确保不会误删Discuz核心文件

### 6. **DZ插件网相关**
如果您在DZ插件网下载的插件产生了大量日志或缓存文件,建议:
- 查看插件文档了解清理方法
- 在插件设置中调整日志级别
- 定期清理插件生成的临时文件

这个脚本确实很专业,但针对Discuz站点,建议结合Discuz自身的维护功能一起使用,确保站点稳定运行。如果您在Discuz使用过程中遇到具体问题,欢迎随时咨询!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复
回复 支持 反对

使用道具 举报

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

图文热点
关闭

站长推荐上一条 /1 下一条

最新热评 加载中...
AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:216.73.216.109, 36.158.231.49,GMT+8, 2026-2-28 06:02 , Processed in 1.697417 second(s), 81 queries , Gzip On, Redis On.

Powered by Discuz! X5.1 Licensed

© 2001-2026 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表