天天看點

Linux下logrotate指令使用.配置和了解

對于Linux 的系統安全來說,日志檔案是極其重要的工具。系統管理者可以使用logrotate 程式用來管理系統中的最新的事件,對于Linux 的系統安全來說,日志檔案是極其重要的工具。系統管理者可以使用logrotate 程式用來管理系統中的最新的事件, 還可以用來備份日志檔案。

  Syslog-ng服務隻提供對log進行接收以及再處理(繼續分發或者存儲),但并不對産生的log檔案進行管理,這樣導緻的後果就是可能這個檔案越來越大,如果忘了對日志檔案進行管理,結果導緻這個日志檔案20多G,囧,很有可能導緻系統崩潰。日志檔案管理這項工作其實是由logrotate子產品來負責。

1、logrotate 指令使用

 功能說明:管理記錄檔案。

 語  法:logrotate [-?dfv][-s <狀态檔案>][--usage][配置檔案]

 補充說明:使用logrotate指令,可讓你輕松管理系統所産生的記錄檔案。它提供自動替換,壓縮,删除和郵寄記錄檔案,每個記錄檔案都可被設定成每日,每周或每月處理,也能在檔案太大時立即處理。您必須自行編輯,指定配置檔案,預設的配置檔案存放在/etc目錄下,檔案名稱為logrotate.conf。

 參  數:

 -?或--help  線上幫助。

 -d或--debug  詳細顯示指令執行過程,便于排錯或了解程式執行的情況。

 -f或--force  強行啟動記錄檔案維護操作,縱使logrotate指令認為沒有需要亦然。

 -s<狀态檔案>或--state=<狀态檔案>  使用指定的狀态檔案。

 -v或--version  顯示指令執行過程。

 -usage  顯示指令基本用法。

logrotate最常用的三個方式為:

logrotate /etc/logrotate.conf:重新讀取配置檔案,并對符合條件的檔案檔案進行rotate。

logrotate -d /etc/logrotate.conf:調試模式,輸出調試結果,但并不執行。

logrotate -f /etc/logrotate.conf:強制模式,對所有相關檔案進行rotate。

2、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 (預設)以及KB (sizek)或者MB (sizem).

3、logrotate 預設配置檔案

logrotate 預設配置檔案 /etc/logrotate.conf。

Red Hat Linux(或Centos) 預設安裝的檔案内容是:

# 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

# 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  root utmp
rotate 
}

/var/log/lastlog {
monthly
rotate 
}

# system-specific logs may be configured here

           

預設的配置一般放在logrotate.conf 檔案的最開始處,影響整個系統。在本例中就是前面12行。

第三行weekly 指定所有的日志檔案每周7天轉儲一次。

第五行 rotate 4 指定轉儲檔案的保留 4份。例如:/var/log/secure登入安全日志,從secure.1 ~ secure.4。

第七行 errors root 指定錯誤資訊發送給root。

第九行create 指定 logrotate 自動建立新的日志檔案,新的日志檔案具有和 原來的檔案一樣的權限。

第11行 #compress 指定不壓縮轉儲檔案,如果需要壓縮,去掉注釋就可以了。

4、使用include 選項讀取其他配置檔案

  include 選項允許系統管理者把分散到幾個檔案的轉儲資訊,集中到一個主要的配置檔案。當 logrotate 從logrotate.conf 讀到include 選項時,會從指定檔案讀入配置資訊,就好像他們已經/etc/logrotate.conf 中一樣。

  第13行 include /etc/logrotate.d 告訴 logrotate 讀入存放在/etc/logrotate.d 目錄中的日志轉儲參數,當系統中安裝了RPM 軟體包時,使用include 選項十分有用。RPM 軟體包的日志轉儲參數一般存放在/etc/logrotate.d 目錄。例如:/etc/logrotate.d/syslog,對messages,secure,maillog,spooler,boot.log,cron進行日志切割,使用全局配置參數“每周轉儲,保留4份”。

  include 選項十分重要,一些應用把日志轉儲參數存放在 /etc/logrotate.d 。

  典型的應用有:apache, linuxconf, samba, cron 以及syslog。

  這樣,系統管理者隻要管理一個 /etc/logrotate.conf 檔案就可以了。

/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 > /dev/null` > /dev/null || true
    /bin/kill -HUP `cat /var/run/rsyslogd.pid > /dev/null` > /dev/null || true
    endscript
}
      
Linux下logrotate指令使用.配置和了解

5、使用include 選項覆寫預設配置

當/etc/logrotate.conf讀入檔案時,include指定的檔案中的轉儲參數将覆寫預設的參數,如下例:

linuxconf檔案的參數

/var/log/htmlaccess.log {
 errors jim
 notifempty
 nocompress
 weekly
 prerotate
 /usr/bin/chattr -a /var/log/htmlaccess.log
 endscript

 postrotate
 /usr/bin/chattr +a /var/log/htmlaccess.log
 endscript
}

/var/log/netconf.log {
 nocompress
 monthly
}
           

在這個例子中,當 /etc/logrotate.d/linuxconf 檔案被讀入時,下面的參數将覆寫/etc/logrotate.conf中預設的參數。

Notifempty

errors jim

6、為指定的檔案配置轉儲參數

經常需要為指定檔案配置參數,一個常見的例子就是每月轉儲/var/log/wtmp。為特定檔案而使用的參數格式是:

# 注釋

/full/path/to/file{
    option(s)
}
      

下面的例子就是每月轉儲 /var/log/wtmp 一次:

#Use logrotate to rotate wtmp
/var/log/wtmp {
    monthly
    rotate 
}

           

7、使用注意事項

1、盡管花括号的開頭可以和其他文本放在同一行上,但是結尾的花括号必須單獨成行。

2、使用 prerotate 和 postrotate 選項

下面的例子是典型的腳本 /etc/logrotate.d/syslog,這個腳本隻是對/var/log/messages有效。

/var/log/messages {
    prerotate
    /usr/bin/chattr -a /var/log/messages
    endscript

    postrotate
    /usr/bin/kill -HUP syslogd
    /usr/bin/chattr +a /var/log/messages
    endscript
}
      

第一行指定腳本對 /var/log messages 有效花括号外的/var/log messages

prerotate 指令指定轉儲以前的動作/usr/bin/chattr -a 去掉/var/log/messages檔案的“隻追加”屬性 endscript 結束 prerotate 部分的腳本postrotate 指定轉儲後的動作

/usr/bin/killall -HUP syslogd  用來重新開機(不停服務,重新加載)系統日志守護程式 syslogd

/usr/bin/chattr +a /var/log/messages  重新為 /var/log/messages 檔案指定“隻追加”屬性,這樣防治程式員或使用者覆寫此檔案。

最後的 endscript 用于結束 postrotate 部分的腳本

3、logrotate 的運作分為三步:

判斷系統的日志檔案,建立轉儲計劃以及參數,通過cron daemon 運作下面的代碼是 Red Hat Linux 預設的crontab 來每天運作logrotate。

#/etc/cron.daily/logrotate

#! /bin/sh

/usr/sbin/logrotate /etc/logrotate.conf

4、/var/log/messages 不能産生的原因:

這種情況很少見,但是如果你把/etc/services 中的 514/UDP 端口關掉的話,這個檔案就不能産生了。

小結:本文通過對Red Hat 系統上典型的logrotate 配置例子的介紹,詳細說明了logrotate 程式的應用方法。希望對所有Linux 系統管理者有所幫助。管理好、分析好日志檔案是系統安全的第一步。

參考文章

http://blog.csdn.net/cjwid/article/details/1690101

http://baike.baidu.com/view/4811958.htm

繼續閱讀