新聞中心

[root@localhost ~]# vi /etc/cron.daily/logrotate
#!/bin/sh
/usr/sbin/logrotate /etc/logrotate.conf >/dev/null 2>&1
#最主要的就是執(zhí)行了logrotate命令
EXITVALUE=$?
if [ $EXITVALUE!= 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
也就是說(shuō),系統(tǒng)每天都會(huì)執(zhí)行 /etc/cron.daily/logrotate 文件,運(yùn)行這個(gè)文件中的“/usr/sbin/logrotate/etc/logrotate.conf>/dev/null 2>&1”命令。logrotate 命令會(huì)依據(jù) /etc/logrotate.conf 配置文件的配置,來(lái)判斷配置文件中的日志是否符合日志輪替的條件(比如,日志備份時(shí)間已經(jīng)滿一周),如果符合,日志就會(huì)進(jìn)行輪替。所以說(shuō),日志輪替還是由 crond 服務(wù)發(fā)起的。
logrotate 命令的格式是什么樣的呢?我們來(lái)學(xué)習(xí)一下。
[root@localhost ~]# logrotate [選項(xiàng)] 配置文件名
選項(xiàng):
- 如果此命令沒(méi)有選項(xiàng),則會(huì)按照配置文件中的條件進(jìn)行日志輪替
- -v:顯示日志輪替過(guò)程。加入了-v選項(xiàng),會(huì)顯示日志的輪替過(guò)程
- -f: 強(qiáng)制進(jìn)行日志輪替。不管日志輪替的條件是否符合,強(qiáng)制配置文件中所有的日志進(jìn)行輪替
我們執(zhí)行 logrotate 命令,并查看一下執(zhí)行過(guò)程。
[root@localhost ~]# logrotate -v /etc/logrotate.conf
#查看日志輪替的流程
…省略部分輸出…
rotating pattern:/var/log/alert.log weekly (6 rotations)
#這就是我們自己加入輪替的alert.log日志
empty log files are rotated, old logs are removed
considering log /var/log/alert.log
log does not need rotating
#時(shí)間不夠一周,所以不進(jìn)行日志輪替
…省略部分輸出…
我們發(fā)現(xiàn),/var/log/alert.log 加入了日志輪替,已經(jīng)被 logrotate 識(shí)別并調(diào)用了,只是時(shí)間沒(méi)有達(dá)到輪替的標(biāo)準(zhǔn),所以沒(méi)有進(jìn)行輪替。那我們強(qiáng)制進(jìn)行一次日志輪替,看看會(huì)有什么結(jié)果。
[root@localhost ~]# logrotate -vf /etc/logrotate.conf
#強(qiáng)制進(jìn)行日志輪替,不管是否符合輪替條件
…省略部分輸出…
rotating pattern:/var/log/alert.log forced from command line (6 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/alert.log
log needs rotating
#日志需要輪替
rotating log /var/log/alert.log,log->rotateCount is 6
dateext suffix '-20130607'
#提取日期參數(shù)
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
glob finding old rotated logs failed
running prerotate script
fscreate context set to unconfined_u:object_r:var_log_t:s0
renaming /var/log/alert.log to /var/log/alert.log-20130607
#舊的日志被重命名
creating new /var/log/alert.log mode = 0600 uid = 0 gid = 0
#創(chuàng)建新日志文件,同時(shí)指定權(quán)限、所有者和屬組
running postrotate script
…省略部分輸出…
我們發(fā)現(xiàn),alert.log 日志已經(jīng)完成了日志輪替。查看一下新生成的日志和舊日志,如下:
[root@localhost ~]# ll /var/log/alert.log*
-rw-------.1 root root 0 6月 7 10:07 /var/log/alert.log
-rw-------.1 root root 237 6月 7 09:58 /var/log/alert.log-20130607
#舊的日志文件已經(jīng)輪替
[root@localhost ~]# lsattr /var/log/alert.log
-----a-------e- /var/log/alert.log
#新的日志文件被自動(dòng)加入了chattr的a屬性
logrotate 命令在使用“-f”選項(xiàng)之后,就會(huì)不管日志是否符合輪替條件,而強(qiáng)制把所有的日志都進(jìn)行輪替。
分享名稱:Linuxlogrotate命令用法詳解:進(jìn)行日志轉(zhuǎn)儲(chǔ)(輪替)
文章鏈接:http://www.fisionsoft.com.cn/article/cddccjp.html


咨詢
建站咨詢
