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

Logrotate 完全指南:Linux 日誌輪替、壓縮與自動化管理最佳實踐

編輯:Linux 教學

Linux 系統運行久了,日誌檔案會無限增長佔滿磁碟。Logrotate 正是為此而生:定期輪替(重命名/歸檔)、壓縮、刪除舊日誌,確保磁碟空間可控。本文詳細解析配置檔結構、應用層配置、啟用方式與壓縮最佳實踐。

一、核心配置檔:/etc/logrotate.conf

定義全域預設策略:

# rotate log files weekly
#weekly

# rotate log files daily
daily

# keep 4 weeks worth of backlogs
#rotate 4

# keep 7 days worth of backlogs
rotate 7

# create new (empty) log files after rotating old ones
create

關鍵參數解讀:

  • daily/weekly/monthly:輪替頻率(互斥,取消註釋生效)
  • rotate N:保留 N 個歸檔副本,超過自動刪除最舊
  • create:輪替後自動建立新空日誌檔,保持服務寫入不中斷

以上配置效果:每日輪替,保留 7 天,檔名演變為 logfile、logfile.0...logfile.6。

二、應用層配置目錄:/etc/logrotate.d/

各服務(nginx、mysql、syslog 等)在此放置專屬配置,優先級高於全域配置。新裝服務務必確認此目錄下有對應檔案。

範例:備份目錄 .tgz 檔案專用策略

/data/backups/*.tgz {
    daily
    rotate 30
    nocompress
    missingok
    notifempty
    create 0600 root root
}
  • nocompress:不壓縮(已是壓縮包)
  • missingok:檔案不存在不報錯
  • notifempty:空檔不輪替
  • create 0600 root root:新檔權限與擁有者

發行版差異提醒

  • Debian/Ubuntu:/etc/cron.daily/sysklogd 讀取 /etc/syslog.conf 自動輪替系統日誌,無需在 logrotate.d 重複配置
  • RHEL/Fedora/CentOS:由 /etc/cron.daily/logrotate 驅動,不讀取 syslog 配置,必須在 logrotate.d 顯式配置

三、手動觸發與測試

# 強制執行所有配置
logrotate -f /etc/logrotate.conf

# 僅執行特定配置檔
logrotate -f /etc/logrotate.d/syslog

四、啟用日誌壓縮:應對高流量場景

編輯 /etc/logrotate.conf 加入:

# Activate log compression
compress
  • 使用 gzip 壓縮,副檔名 .gz
  • 查看內容無需解壓:zcat /var/log/messages.1.gz

壓縮後檔名範例

/var/log/messages
/var/log/messages.1.gz
/var/log/messages.2.gz
...
/var/log/messages.7.gz

五、生產環境建議清單

  • ✅ 所有關鍵服務(nginx、php-fpm、mysql、docker 等)在 logrotate.d 有獨立配置
  • ✅ 高頻寫入服務設 daily + compress + delaycompress(次日再壓縮,利於即時分析)
  • ✅ 保留天數符合合規要求(如 30/90/365 天)
  • ✅ 定期 logrotate -f 測試配置有效性
  • ✅ 監控 /var/log 磁碟使用率,設定告警閾值

掌握 Logrotate,讓日誌管理從「被動滅火」轉為「主動可控」,守護系統穩定運行。

Copyright © Windows教程網 All Rights Reserved