}
底下我们再以
/etc/logrotate.d/syslog
这个轮替
rsyslog.service
服务的文件,来看看该如何设定他的
rotate
呢?
[root@study ~]#
vim /etc/logrotate.d/syslog
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
sharedscripts
postrotate
/bin/kill
-
HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
在上面的语法当中,我们知道正确的
logrotate
的写法为:
.
檔名
:被处理的登录文件绝对路径文件名写在前面,可以使用空格符分隔多个登录档;
.
参数
:上述档名½行轮替的参数使用
{ }
包括起来;
.
执行½本
:可呼½外部指令来½行额外的命令下达,这个设定需与
sharedscripts .... endscript
设定合用才行。
至于可用的环境为:
o
prerotate
:在启动
logrotate
之前½行的指令,例如修改登录文件的属性等动作;
o
postrotate
:在做完
logrotate
之后启动的指令,例如重新启动
(kill -HUP)
某个服务!
o
Prerotate
与
postrotate
对于已加上特殊属性的文件处理上面,是相当重要的执行程序!
那么
/etc/logrotate.d/syslog
内设定的
5
个文件的轮替功能就变成了:
.
该设定只对
/var/log/
内的
cron, maillog, messages, secure, spooler
有效;
.
登录档轮替每周一次、保留四个、且轮替下来的登录档不½行压缩
(
未更改默认值
)
;
.
轮替完毕后
(postrotate)
取得
syslog
的
PID
后,以
kill -HUP
重新启动
syslogd
假设我们有针对
/var/log/messages
这个文件增加
chattr +a
的属性时,
依据
logrotate
的工作原理,
我们知道,这个
/var/log/messages
½会被更名成为
/var/log/messages.1
才是。但是由于加上这个
+a
的参数啊,所以更名是不可能成功的!
那怎么办呢?呵呵!就利用
prerotate
与
postrotate
来½行登
录档轮替前、后所需要作的动作啊!
果真如此时,那么你可以这样修改一下这个文件喔!
[root@study ~]#
vim /etc/logrotate.d/syslog
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure