logrotate定時管理linux記錄檔

來源:互聯網
上載者:User
對於Linux 的系統安全來說,記錄檔是極其重要的工具。系統管理員可以使用logrotate 程式用來管理系統中的最新的事件。


對於Linux 的系統安全來說,記錄檔是極其重要的工具。

系統管理員可以使用logrotate 程式用來管理系統中的最新的事件。logrotate 還可以用來備份記錄檔,本篇將通過以下幾部分來介紹


記錄檔的管理:

1、logrotate 配置

2、預設配置 logrotate

3、使用include 選項讀取其他設定檔

4、使用include 選項覆蓋預設配置

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


一、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).



二、預設配置 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 。


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


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


四、使用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


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

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


# 注釋

/full/path/to/file

{

option(s)

}


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

#Use logrotate to rotate wtmp

/var/log/wtmp

{

monthly

rotate 1

}



六、其他需要注意的問題


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 系統管理員有所協助。管理好,分析好記錄檔是系統安全的第一步.(另外還有一個檢查日誌的好東東 logcheck)。
文章引用自: http://blog.sina.com.cn/s/blog_4a29d64301000786.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.