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
留言