去评论
dz插件网

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

惧愁人
2026/02/27 16:59:32
瀹濆浼佷笟鐗堟墠鏈夌殑鏈嶅姟鍣ㄧ┖闂村崰鐢ㄧ郴缁熶紭鍖栨竻鐞嗗姛鑳借剼鏈€愬叏缃戦鍙 鍏嶈垂鍒嗕韩  涓撲笟浼佷笟绾inux绯荤粺纾佺洏娓呯悊瀹夊叏鑴氭湰銆戯細
鐪熸浼佷笟绾с€侀珮鍙敤鐨勮В鍐虫柟妗堬細鑴辩瀹濆锛屼娇鐢 Systemd 瀹堟姢杩涚▼
涓轰簡鍋氬埌鈥滄瀬搴﹀彲闈犫€濓紝鎴戜滑蹇呴』鎶涘純瀹濆鐨勮鍒掍换鍔★紝鐩存帴鍦 Debian 绯荤粺鐨勫唴鏍歌皟搴﹀眰锛圫ystemd锛夋敞鍐屼竴涓鐙珛鐨勫悗鍙板畧鎶よ繘绋 (Daemon)


绗竴姝ワ細鍒涘缓鏍稿績鐩戞帶鑴氭湰
鍦 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 纭繚瀹冭繍琛屾甯搞€傛湁浜嗚繖濂楅€昏緫鍔犳寔锛屼綘鐨勬湇鍔″櫒灏卞叿澶囦簡鍍忓ぇ鍘備簯涓绘満涓€鏍风殑鈥滅鐩樿嚜鎰堚€濊兘鍔涖€