一、logrotate 配置
logrotate 程式是一個日志檔案管理工具。用來把舊的日志檔案删除,并建立新的日志檔案,我們把它叫做“轉儲”。我們可以根據日志檔案的大小,也可以根據其天數來轉儲,這個過程一般通過 cron 程式來執行。
logrotate 程式還可以用于壓縮日志檔案,以及發送日志到指定的E-mail 。
logrotate 的配置檔案是 /etc/logrotate.conf。主要參數如下表:
參數 功能
compress 通過gzip 壓縮轉儲以後的日志
nocompress 不需要壓縮時,用這個參數
copytruncate 用于還在打開中的日志檔案,把目前日志備份并截斷
nocopytruncate 備份日志檔案但是不截斷
create mode owner group 轉儲檔案,使用指定的檔案模式建立新的日志檔案
nocreate 不建立新的日志檔案
delaycompress 和 compress 一起使用時,轉儲的日志檔案到下一次轉儲時才壓縮
nodelaycompress 覆寫 delaycompress 選項,轉儲同時壓縮。
errors address 專儲時的錯誤資訊發送到指定的Email 位址
ifempty 即使是空檔案也轉儲,這個是 logrotate 的預設選項。
notifempty 如果是空檔案的話,不轉儲
mail address 把轉儲的日志檔案發送到指定的E-mail 位址
nomail 轉儲時不發送日志檔案
olddir directory 轉儲後的日志檔案放入指定的目錄,必須和目前日志檔案在同一個檔案系統
noolddir 轉儲後的日志檔案和目前日志檔案放在同一個目錄下
prerotate/endscript 在轉儲以前需要執行的指令可以放入這個對,這兩個關鍵字必須單獨成行
postrotate/endscript 在轉儲以後需要執行的指令可以放入這個對,這兩個關鍵字必須單獨成行
daily 指定轉儲周期為每天
weekly 指定轉儲周期為每周
monthly 指定轉儲周期為每月
rotate count 指定日志檔案删除之前轉儲的次數,0 指沒有備份,5 指保留5 個備份
tabootext [+] list 讓logrotate 不轉儲指定擴充名的檔案,預設的擴充名是:.rpm-orig, .rpmsave, v, 和 ~
size size 當日志檔案到達指定的大小時才轉儲,Size 可以指定 bytes (預設)以及K (sizek)或者M (sizem).
二、預設配置 logrotate
logrotate 預設的配置募/etc/logrotate.conf。
Red Hat linux 預設安裝的檔案内容是:
# see "man logrotate" for details
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# send errors to root
errors root
# create new (empty) log files after rotating old ones
create
# uncomment this if you want your log files compressed
#compress
1
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own lastlog or wtmp --we'll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
rotate 1
}
/var/log/lastlog {
monthly
rotate 1
}
# system-specific logs may be configured here
預設的配置一般放在logrotate.conf 檔案的最開始處,影響整個系統。在本例中就是前面12行。
第三行weekly 指定所有的日志檔案每周轉儲一次。
第五行 rotate 4 指定轉儲檔案的保留 4份。
第七行 errors root 指定錯誤資訊發送給root。
第九行create 指定 logrotate 自動建立新的日志檔案,新的日志檔案具有和
原來的檔案一樣的權限。
第11行 #compress 指定不壓縮轉儲檔案,如果需要壓縮,去掉注釋就可以了。
三、使用include 選項讀取其他配置檔案
include 選項允許系統管理者把分散到幾個檔案的轉儲資訊,集中到一個
主要的配置檔案。當 logrotate 從logrotate.conf 讀到include 選項時,會從指定檔案讀入配置資訊,就好像他們已經在/etc/logrotate.conf 中一樣。
第13行 include /etc/logrotate.d 告訴 logrotate 讀入存放在/etc/logrotate.d 目錄中的日志轉儲參數,當系統中安裝了RPM 軟體包時,使用include 選項十分有用。RPM 軟體包的日志轉儲參數一般存放在/etc/logrotate.d目錄。
include 選項十分重要,一些應用把日志轉儲參數存放在 /etc/logrotate.d ,/etc/logrotate.d/裡的每個檔案配置會覆寫或追加該檔案預設的參數,如果未指定參數,則采用logrotate.conf中預設的參數,比如logrotate.conf中,rotate預設為4, test(四章中的例子)檔案指定rotate為50,将覆寫rotate配置,
典型的應用有:apache, linuxconf, samba, cron 以及syslog, squid。
這樣,系統管理者隻要管理一個 /etc/logrotate.conf 檔案就可以了。
logrotate 也可以直接執行 後直接跟配置檔案就可以了。
-v 給出詳細資訊
-d debug模式,不更改日志檔案内容 模拟執行
-f 強制執行,忽略所有規則
四、測試例子
例1:在/etc/logrotate.d/目錄下,touch test,打開test檔案輸入以下:
[cpp] view plain copy
- <span style="font-size:24px;">/tmp/test.log{
- missingok
- create 0640 root root
- rotate 50
- size=1k
- }</span>
在/tmp/目錄下touch test.log檔案
執行指令: dd if=/dev/zero of=test.log bs=1024 count=1000
之後檔案大小為1000K。
執行指令: logrotate -v /etc/logrotate.conf
ls -lrt檢視/tmp目錄多了一個test.log.1,大小是1000K
得出結論:
1.logrotate能設定檔案大小,當超過這個大小時,是轉儲成另一個檔案,而不是按size大小轉儲多個檔案。
2.logrotate本身并不能時時監控檔案大小,logrotate一般是在/etc/cron.daily中一天執行一次,是以當test.log超過配置的size大小時,并不能主動觸發logrotate指令,這将造成logrotate滞後,當然,可以在crontab裡1分鐘執行一次,不過這樣的話,整個日志系統效率會比較低。我們可以寫個腳本一秒執行一次檢測test.log檔案大小。如下:
[cpp] view plain copy
- <span style="font-size:24px;">#!/bin/bash
- a="/tmp/test.log"
- while [[ -f $a ]];
- do
- sleep 1;
- size=`ls -lrt $a | cut -d " " -f 5`
- echo $size
- if [ $size -ge 1024 ];
- then
- logrotate /etc/logrotate.conf;
- fi
- done</span>
例2:和例1一樣,也是test.log,不過,在/etc/logrotate.d/test裡改動如下:
[cpp] view plain copy
- <span style="font-size:24px;">/tmp/test.log{
- missingok
- create 0640 root root
- rotate 50
- size=1k
- prerotate
- chattr -a /tmp/test.log
- endscript
- postrotate
- chattr +a /tmp/test.log
- endscript
- }</span>
chattr +a屬性是把該檔案變成隻能追加模式,不能截斷和覆寫,也不能重命名,是以logrotate之前,需要chattr -a,logrotate之後再chattr +a加上該屬性(見test檔案)
執行:dd if=/dev/zero of=/tmp/111 bs=1025 count=1 生成1025位元組的111檔案
執行:cat /tmp/111 >> /tmp/test.log
執行:logrotate -vf /etc/logrotate.conf
test.log成功轉儲到test.log.1
來源:http://blog.csdn.net/hepeng597/article/details/7768615