Shell 腳本實戰(zhàn):自動定時清理日志文件,徹底磁盤爆滿問題
作者:運維李哥 
  今天分享一下如何定期處理日志,自動化解決磁盤爆滿的問題,讓你多摸一會魚!
 之前分享了如何快速處理磁盤爆滿的問題:《快速定位和解決磁盤爆滿問題的五步法,建議收藏》
今天分享一下如何定期處理日志,自動化解決磁盤爆滿的問題,讓你多摸一會魚!

1. 實戰(zhàn)目標
- 清理指定目錄中超過一定天數(shù)的日志文件
 - 支持多個日志后綴(如 .log、.out、.txt)
 - 記錄每次執(zhí)行日志
 - 設為 crontab 定時執(zhí)行
 
2. Shell 腳本代碼
vim /opt/clean_expired_logs.sh#!/bin/bash
# ========== 基礎配置 ==========
# 目標日志目錄(請根據(jù)實際修改)
LOG_DIR="/data/css2/tomcat/logs/"
# 日志文件擴展名,例如 log、txt、out 等
LOG_EXT="out"
# 日志保留天數(shù)(大于此天數(shù)的文件將被刪除)
KEEP_DAYS=7
# 腳本運行日志(記錄清理過程和異常)
SCRIPT_LOG="/var/log/clean_logs_script.log"
# ========== 開始執(zhí)行 ==========
echo"[$(date +'%F %T')] 開始執(zhí)行日志清理任務..." >> "$SCRIPT_LOG"
# 檢查目標目錄是否存在
if [ ! -d "$LOG_DIR" ]; then
echo"[$(date +'%F %T')] 錯誤:目錄 $LOG_DIR 不存在!任務終止。" >> "$SCRIPT_LOG"
exit 1
fi
# 執(zhí)行日志清理
echo"[$(date +'%F %T')] 正在刪除 $KEEP_DAYS 天前的 *.$LOG_EXT 文件..." >> "$SCRIPT_LOG"
find "$LOG_DIR" -type f -name "*.$LOG_EXT" -mtime +$KEEP_DAYS -print -exec rm -f {} \; >> "$SCRIPT_LOG" 2>&1
echo"[$(date +'%F %T')] 日志清理任務完成。" >> "$SCRIPT_LOG"
3. 測試運行
保存腳本為clean_expired_logs.sh。
賦予執(zhí)行權限:
chmod +x clean_expired_logs.sh手動運行測試:
./clean_expired_logs.sh可查看運行日志:
cat /var/log/clean_logs_script.log
4. 設置定時任務
通過 crontab 每天凌晨2點自動執(zhí)行:
crontab -e添加內(nèi)容:
0 2 * * * /bin/bash /opt/clean_expired_logs.sh5. 擴展建議
功能擴展  | 方法  | 
清理多個目錄  | 用數(shù)組或循環(huán)遍歷多個   | 
支持多個后綴名  | 
  | 
刪除前預覽文件  | 先用   | 
清理后統(tǒng)計空間  | 加入   | 
責任編輯:趙寧寧 
                    來源:
                    運維李哥不背鍋
 














 
 
 











 
 
 
 