Nginx 伺服器運行久了,日誌檔案會不斷累積,若不加以管理,極易佔滿整個磁碟空間導致服務中斷。本文分享一個實用的 Shell 腳本,配合排程任務實現日誌的自動化清理。
建立一個 Shell 腳本檔案(例如 autodellogs.sh),內容如下:
#!/bin/bash
find /usr/local/nginx/logs/ -mtime +15 -type f -name "*.log" | xargs rm -f
參數說明:
-mtime +15:查找修改時間超過 15 天的檔案-type f:僅針對一般檔案-name "*.log":匹配副檔名為 .log 的檔案xargs rm -f:強制刪除找到的檔案⚠️ 關鍵提醒:直接執行上述腳本有風險!若 Nginx 正在寫入的日誌檔案超過 15 天未切割,腳本會誤刪正在使用的檔案,導致 Nginx 寫入失敗甚至服務異常。
因此,必須先配置 Nginx 日誌自動切割(如按天或按大小切割),確保當前寫入的日誌檔案永遠是「新」檔案。日誌切割腳本可參考:
chmod +x autodellogs.shcrontab -e00 01 * * * /bin/bash /root/shell/autodellogs.shservice crond restart此腳本通用性極強,只需修改路徑即可應用於 PHP、Tomcat 等其他服務的日誌清理,是運維人員的必備工具之一。