Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 伺服器技術 >> 關於伺服器

Nginx 定期自動清理日誌腳本實作教學

編輯:關於伺服器

前言

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 日誌自動切割(如按天或按大小切割),確保當前寫入的日誌檔案永遠是「新」檔案。日誌切割腳本可參考:

  • Linux 來源碼編譯安裝 Nginx 與 PHP (FastCGI) 教學
  • CentOS 系統初始化安裝 MySQL、PHP、Nginx 腳本

部署與排程設定

  1. 賦予腳本執行權限:chmod +x autodellogs.sh
  2. 編輯 crontab:crontab -e
  3. 加入每天凌晨 1 點自動執行:
    00 01 * * * /bin/bash /root/shell/autodellogs.sh
  4. 重啟 cron 服務:service crond restart

擴展應用

此腳本通用性極強,只需修改路徑即可應用於 PHP、Tomcat 等其他服務的日誌清理,是運維人員的必備工具之一。

Copyright © Windows教程網 All Rights Reserved