logrotate 登錄檔資料的輪替

  • logrotate 程序是掛在 cron 底下進行的,就是這個 /etc/cron.daily/logrotate。
  • logrotate.conf   – 是主要的參數檔案。
  • logrotate.d        – 是一個目錄,裡面的所有檔案都會被主動的讀入 /etc/logrotate.conf 當中來進行,在/etc/logrotate.d裡面的檔案中,如果沒有規定到的一些細部設定,則以/etc/logrotate.conf這個檔案的規定來指定為預設值。

設定檔 logrotate.conf

weekly                               # 每個禮拜進行一次 rotate 的工作

rotate 4                             # 保留幾個登錄檔,預設是保留四個!

create                                # 是否建立新的登錄檔來記錄

compress                           # 輪替之後的檔案,進行壓縮

include /etc/logrotate.d     # 讀進此目錄裡的檔案,進行rotate的工作

/var/log/wtmp {
   monthly                                  # 每個月進行一次 log rotate 的工作
   create 0664 root utmp           # 將檔案的權限設定為 664
   rotate 1                                  # 僅保存前一個月的 rotate 備份
}

/var/log/btmp {
   missingok
   monthly
   create 0600 root utmp
   rotate 1
}

格式說明:

登錄檔的絕對路徑檔名 {
            各項基本上設定值
}

實際例子:
vi /etc/logrotate.d/syslog

/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron {

 

# 將要被處理的登錄檔檔名 (包含絕對路徑) 寫在前面,
# 可以使用空白字元分隔多個登錄檔;
# 用 { } 包括所有的設定;

   sharedscripts
   postrotate
           /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
   endscript
}

 

# 特殊執行的指令,這個設定需與 sharedscripts …. endscript 設定合用才行;
# prerotate:在啟動 logrotate 之前進行的指令,例如修改登錄檔的屬性等動作;
# postrotate:在做完 logrotate 之後啟動的指令,例如重新啟動 (kill -1 或 kill -HUP) 某個服務;

Logrotate的測試,執行 logrotate -v /etc/logrotate.conf

 

使用-v時,它會顯示有些沒有必要做輪替的需要,所以可以加個-f,強制執行

 

實際作法:

針對maillog於晚上23:59時就做logrotate,先把/etc/logrotate.d/syslog中的/var/log/maillog刪掉,再新增一個/etc/logrotate.maillog.conf

/var/log/maillog (
   daily
   rotate 7
   create
   sharedscripts
   postrotate
      /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
   endscripts
}

排程

59 23 * * * root /usr/sbin/logrotate -f /etc/logrotate.maillog.conf

Related posts 相關文章

作者

留言

撰寫回覆或留言

發佈留言必須填寫的電子郵件地址不會公開。