logrotate 命令切換linux系統日誌

  logrotate是作爲linux系統日誌的管理工具存在。他可以輪換,壓縮,郵件系統日誌文件。

默認的logrotate被加入cron的/etc/cron.daily中作爲每日任務執行。

/etc/logrotate.conf爲其默認配置文件指定每個日誌文件的默認規則。

/etc/logrotate.d/* 爲/etc/logrotate.conf默認包含目錄其中文件也會被logrotate讀取。指明每個日誌文件的特定規則。

 

/var/lib/logrotate/statue中默認記錄logrotate上次輪換日誌文件的時間。

 

在debian下,在/etc/cron.daily/中會存在一個sysklogd任務。這個每日執行任務由cron啓動,

任務會輪換系統默認日誌文件。默認日誌文件會由syslogd-listfiles命令給出。同時會killall -HUP syslogd重啓syslog服務。

 

在redhat下,會在/etc/logrotate.d/下會存在一個syslog任務,這個任務由logrotate啓動,

也會輪換系統默認日誌文件。同時重啓syslog服務。

對於linux 的系統安全來說,日誌文件是極其重要的工具。

系統管理員可以使用logrotate 程序用來管理系統中的最新的事件。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 端口關掉的話,這個文件就不能產生了。

 

 

否則如果不重啓syslogd服務,日誌默認不會記錄到新生成的日誌文件中,依然記錄在原文件中。

 

所以輪換日誌文件之後,重啓syslogd服務是很重要的。

 

logrotate 也可以直接執行 後直接跟配置文件就可以了。

-v 給出詳細信息

-d debug模式,不更改日誌文件內容 模擬執行

-f 強制執行,忽略所有規則

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章