日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Linux日志輪替(日志轉(zhuǎn)儲(chǔ))及l(fā)ogrotate配置文件分析
日志是重要的系統(tǒng)文件,記錄和保存了系統(tǒng)中所有的重要事件。但是日志文件也需要進(jìn)行定期的維護(hù),因?yàn)槿罩疚募遣粩嘣鲩L的,如果完全不進(jìn)行日志維護(hù),而任由其隨意遞增,那么用不了多久,我們的硬盤就會(huì)被寫滿。

專業(yè)從事成都網(wǎng)站建設(shè)、網(wǎng)站制作,高端網(wǎng)站制作設(shè)計(jì),小程序設(shè)計(jì),網(wǎng)站推廣的成都做網(wǎng)站的公司。優(yōu)秀技術(shù)團(tuán)隊(duì)竭力真誠服務(wù),采用H5網(wǎng)站設(shè)計(jì)+CSS3前端渲染技術(shù),響應(yīng)式網(wǎng)站設(shè)計(jì),讓網(wǎng)站在手機(jī)、平板、PC、微信下都能呈現(xiàn)。建站過程建立專項(xiàng)小組,與您實(shí)時(shí)在線互動(dòng),隨時(shí)提供解決方案,暢聊想法和感受。

日志維護(hù)的最主要的工作就是把舊的日志文件刪除,從而騰出空間保存新的日志文件。這項(xiàng)工作如果靠管理員手工來完成,那其實(shí)是非常煩瑣的,而且也容易忘記。那么 linux 系統(tǒng)是否可以自動(dòng)完成日志的輪替工作呢?

logrotate 就是用來進(jìn)行日志輪替(也叫日志轉(zhuǎn)儲(chǔ))的,也就是把舊的日志文件移動(dòng)并改名,同時(shí)創(chuàng)建一個(gè)新的空日志文件用來記錄新日志,當(dāng)舊日志文件超出保存的范圍時(shí)就刪除。

日志文件的命名規(guī)則

日志輪替最主要的作用就是把舊的日志文件移動(dòng)并改名,同時(shí)建立新的空日志文件,當(dāng)舊日志文件超出保存的范圍時(shí)就刪除。那么,舊的日志文件改名之后,如何命名呢?主要依靠 /etc/logrotate.conf 配置文件中的“dateext”參數(shù)。

如果配置文件中有“dateext”參數(shù),那么日志會(huì)用日期來作為日志文件的后綴,如“secure-20130605”。這樣日志文件名不會(huì)重疊,也就不需要對(duì)日志文件進(jìn)行改名,只需要保存指定的日志個(gè)數(shù),刪除多余的日志文件即可。

如果配置文件中沒有“dateext”參數(shù),那么日志文件就需要進(jìn)行改名了。當(dāng)?shù)谝淮芜M(jìn)行日志輪替時(shí),當(dāng)前的“secure”日志會(huì)自動(dòng)改名為“secure.1”,然后新建“secure”日志,用來保存新的日志;當(dāng)?shù)诙芜M(jìn)行日志輪替時(shí),“secure.1”會(huì)自動(dòng)改名為“secure.2”,當(dāng)前的“secure”日志會(huì)自動(dòng)改名為“secure.1”,然后也會(huì)新建“secure”日志,用來保存新的日志;以此類推。

logrotate配置文件

我們來查看一下 logrotate 的配置文件 /etc/logrotate.conf 的默認(rèn)內(nèi)容。

[root@localhost ~]# vi /etc/logrotate.conf
#see "man logrotate" for details
#rotate log files weekly
weekly
#每周對(duì)日志文件進(jìn)行一次輪替
#keep 4 weeks worth of backlogs rotate 4
#保存4個(gè)日志文件,也就是說,如果進(jìn)行了5次日志輪替,就會(huì)刪除第一個(gè)備份曰志
#create new (empty) log files after rotating old ones create
#在日志輪替時(shí),自動(dòng)創(chuàng)建新的日志文件
#use date as a suffix of the rotated file dateext
#使用日期作為日志輪替文件的后綴
#uncomment this if you want your log files compressed #compress
#日志文件是否壓縮。如果取消注釋,則日志會(huì)在轉(zhuǎn)儲(chǔ)的同時(shí)進(jìn)行壓縮
#以上日志配置為默認(rèn)配置,如果需要輪替的日志沒有設(shè)定獨(dú)立的參數(shù),那么都會(huì)遵循以上參數(shù)
#如果輪替曰志配置了獨(dú)立參數(shù),那么獨(dú)立參數(shù)的優(yōu)先級(jí)更高
#RPM packages drop log rotation information into this directory include /etc/logrotate.d
#包含/etc/logrotate.d/目錄中所有的子配置文件。也就是說,會(huì)把這個(gè)目錄中所有的子配置文件讀取進(jìn)來,進(jìn)行日志輪替
#no packages own wtmp and btmp -- we'11 rotate them here
#以下兩個(gè)輪替曰志有自己的獨(dú)立參數(shù),如果和默認(rèn)的參數(shù)沖突,則獨(dú)立參數(shù)生效
/var/log/wtmp {
#以下參數(shù)僅對(duì)此目錄有效
monthly
#每月對(duì)日志文件進(jìn)行一次輪替
create 0664 root utmp
#建立的新日志文件,權(quán)限是0664,所有者是root,所屬組是utmp組
minsize 1M
#日志文件最小輪替大小是1MB。也就是日志一定要超過1MB才會(huì)輪替,否則就算時(shí)間達(dá)到一個(gè)月,也不進(jìn)行曰志輪替
rotate 1
#僅保留一個(gè)曰志備份。也就是只保留wtmp和wtmp.1曰志)
/var/log/btmp {
#以下參數(shù)只對(duì)/var/log/btmp生效
missingok
#如果日志不存在,則忽略該日志的警告信患
monthly
create 0600 root utmp
rotate 1
}
# system-specific logs may be also be configured here.

在這個(gè)配置文件中,主要分為三部分:

  • 第一部分是默認(rèn)設(shè)置,如果需要轉(zhuǎn)儲(chǔ)的日志文件沒有特殊配置,則遵循默認(rèn)設(shè)置的參數(shù);
  • 第二部分是讀取 /etc/logrotate.d/ 目錄中的日志輪替的子配置文件,也就是說,在 /etc/logrotate.d/ 目錄中的所有符合語法規(guī)則的子配置文件也會(huì)進(jìn)行日志輪替;
  • 第三部分是對(duì) wtmp 和 btmp 日志文件的輪替進(jìn)行設(shè)定,如果此設(shè)定和默認(rèn)參數(shù)沖突,則當(dāng)前設(shè)定生效(如 wtmp 的當(dāng)前參數(shù)設(shè)定的輪替時(shí)間是每月,而默認(rèn)參數(shù)的輪替時(shí)間是每周,則對(duì) wtmp 這個(gè)日志文件來說,輪替時(shí)間是每月,當(dāng)前的設(shè)定參數(shù)生效)。

logrotate 配置文件的主要參數(shù)如表 1 所示。

表 1 logrotate配置文件的主要參數(shù)
參 致 參數(shù)說明
daily 日志的輪替周期是毎天
weekly 日志的輪替周期是每周
monthly 日志的輪控周期是每月
rotate數(shù)宇 保留的日志文件的個(gè)數(shù)。0指沒有備份
compress 當(dāng)進(jìn)行日志輪替時(shí),對(duì)舊的日志進(jìn)行壓縮
create mode owner group 建立新日志,同時(shí)指定新日志的權(quán)限與所有者和所屬組.如create 0600 root utmp
mail address 當(dāng)進(jìn)行日志輪替時(shí).輸出內(nèi)存通過郵件發(fā)送到指定的郵件地址
missingok 如果日志不存在,則忽略該日志的警告信息
nolifempty 如果曰志為空文件,則不進(jìn)行日志輪替
minsize 大小 日志輪替的最小值。也就是日志一定要達(dá)到這個(gè)最小值才會(huì)進(jìn)行輪持,否則就算時(shí)間達(dá)到也不進(jìn)行輪替
size大小 日志只有大于指定大小才進(jìn)行日志輪替,而不是按照時(shí)間輪替,如size 100k
dateext 使用日期作為日志輪替文件的后綴,如secure-20130605
sharedscripts 在此關(guān)鍵宇之后的腳本只執(zhí)行一次
prerotate/cndscript 在曰志輪替之前執(zhí)行腳本命令。endscript標(biāo)識(shí)prerotate腳本結(jié)束
postrolaie/endscripl 在日志輪替之后執(zhí)行腳本命令。endscripi標(biāo)識(shí)postrotate腳本結(jié)束

這些參數(shù)中較為難理解的應(yīng)該是 prerotate/endscript 和 postrotate/endscript,我們利用“man logrotate”中的例子來解釋一下這兩個(gè)參數(shù)。例如:

"/var/log/httpd/access.log" /var/log/httpd/error.log {
#日志輪替的是/var/log/httpd/中RPM包默認(rèn)安裝的apache正確訪問日志和錯(cuò)誤日志
    rotate 5
    #輪替5次
    mail www@my.org
    #把信息發(fā)送到指定郵箱
    size 100k
    #日志大于100KB時(shí)才進(jìn)行日志輪替,不再按照時(shí)間輪替
    sharedscripts
    #以下腳本只執(zhí)行一次
    postrotate
    #在日志輪替結(jié)束之后,執(zhí)行以下腳本
    /usr/bin/killall -HUP httpd
    #重啟apache 服務(wù)
endscript
#腳本結(jié)束
}

prerotate 和 postrotate 主要用于在日志輪替的同時(shí)執(zhí)行指定的腳本,一般用于日志輪替之后重啟服務(wù)。這里強(qiáng)調(diào)一下,如果你的日志是寫入 rsyslog 服務(wù)的配置文件的,那么把新日志加入 logrotate 后,一定要重啟 rsyslog 服務(wù),否則你會(huì)發(fā)現(xiàn),雖然新日志建立了,但數(shù)據(jù)還是寫入了舊的日志當(dāng)中。那是因?yàn)殡m然 logrotate 知道日志輪替了,但是 rsyslog 服務(wù)并不知道。

同理,如果采用源碼包安裝了 apache、Nginx 等服務(wù),則需要重啟 apache 或 Nginx 服務(wù),同時(shí)還要重啟 rsyslog 服務(wù),否則日志也不能正常輪替。

不過,這里有一個(gè)典型應(yīng)用就是給予特定的日志加入 chattr 的 a 屬性。如果系統(tǒng)文件加入了 a 屬性,那么這個(gè)文件就只能增加數(shù)據(jù),而不能刪除和修改已有的數(shù)據(jù),root 用戶也不例外。

因此,我們會(huì)給重要的日志文件加入 a 屬性,這樣就可以保護(hù)日志文件不被惡意修改。不過,一旦加入了 a 屬性,那么在進(jìn)行日志輪替時(shí),這個(gè)日志文件是不能被改名的,當(dāng)然也就不能進(jìn)行日志輪替了。我們可以利用 prerotate 和 postrotate 參數(shù)來修改日志文件的 chattr 的 a 屬性。

把自己的日志加入日志輪替

如果有些日志默認(rèn)沒有加入日志輪替(比如源碼包安裝的服務(wù)的日志,或者自己添加的日志),那么這些日志默認(rèn)是不會(huì)進(jìn)行日志輪替的,這樣當(dāng)然不符合我們對(duì)日志的管理要求。如果需要把這些日志也加入日志輪替,那該如何操作呢?

這里有兩種方法:

  • 第一種方法是直接在 /etc/logrotate.conf 配置文件中寫入該日志的輪替策略,從而把日志加入輪替;
  • 第二種方法是在 /etc/logrotate.d/ 目錄中新建立該日志的輪替文件,在該輪替文件中寫入正確的輪替策略,因?yàn)樵撃夸浿械奈募紩?huì)被包含到主配置文件中,所以也可以把日志加入輪替。

我們推薦第二種方法,因?yàn)橄到y(tǒng)中需要輪替的日志非常多,如果全部直接寫入 /etc/logrotate.conf 配置文件,那么這個(gè)文件的可管理性就會(huì)非常差,不利于此文件的維護(hù)。

說起來很復(fù)雜,我們舉個(gè)例子。還記得我們自己生成的 /var/log/alert.log 日志嗎?這個(gè)日志不是系統(tǒng)默認(rèn)日志,而是我們通過 /etc/rsyslog.conf 配置文件自己生成的日志,所以默認(rèn)這個(gè)日志是不會(huì)進(jìn)行輪替的。如果我們需要把這個(gè)日志加入日志輪替策略,那該怎么實(shí)現(xiàn)呢?我們采用第二種方法,也就是在 /etc/logrotate.d/ 目錄中建立此日志的輪替文件。

具體步驟如下:

[root@localhost ~]# chattr +a /var/log/alert.log #先給日志文件賦予chattr的a屬性,保證日志的安全
[root@localhost ~]# vi /etc/logrotate.d/alter
#創(chuàng)建alter輪替文件,把/var/log/alert.log加入輪替
/var/log/alert.log {
    weekly
    #每周輪替一次
    rotate 6
    #保留6個(gè)輪替曰志
    sharedscripts
    #以下命令只執(zhí)行一次
    prerotate
    #在日志輪替之前執(zhí)行
        /usr/bin/chattr -a /var/log/alert.log
        #在日志輪替之前取消a屬性,以便讓日志可以輪替
    endscript
    #腳本結(jié)朿
    sharedscripts
    postrotate
    #在日志輪替之后執(zhí)行
        /usr/bin/chattr +a /var/log/alert.log
        #在日志輪替之后,重新加入a屬性
    endscript
    sharedscripts
    postrotate
    /bin/kill -HUP $(/bin/cat /var/run/syslogd.pid 2>/dev/null) fi>/dev/null
    endscript
    #重啟rsyslog服務(wù),保證日志輪替正常進(jìn)行
}

這樣我們自己生成的日志 /var/log/alert.log 也就可以進(jìn)行日志輪替了,當(dāng)然這些配置信息也是可以直接寫入 /etc/logrotate.conf 這個(gè)配置文件的。


當(dāng)前標(biāo)題:Linux日志輪替(日志轉(zhuǎn)儲(chǔ))及l(fā)ogrotate配置文件分析
轉(zhuǎn)載來于:http://www.5511xx.com/article/dhsjshg.html