如何使日志轮换更改生效


Answers:


139

logrotate用于crontab工作。它是计划的工作,而不是守护程序,因此无需重新加载其配置。
crontab执行logrotate时,会自动使用新的配置文件。
如果您需要测试配置,也可以logrotate使用以下命令自行执行:

logrotate /etc/logrotate.d/your-logrotate-config

或者如注释logrotate中所述,在命令输出中标识该行crontab -l并执行命令行以参考slm的答案以获取准确的cron。


1
只是为了增加您的答案,Cron条目logrotate计划每天运行一次。
mkc 2014年

@Ketan,所以,我如何使其立即受到影响?谢谢
BufBills 2014年

不确定。一种可能性是通过crontab -l并从crontab中找到相应的条目并执行它。
mkc 2014年

2
如果您希望它生效,请立即运行cron后记。
slm

2
logrotate有一个-d用于测试(或“调试”)的选项,我建议至少运行一次。
FrustratedWithFormsDesigner

36

logrotate我在各种发行版上看到的大多数设置都用光了/etc/cron.daily。有一个shell脚本,恰当地命名为logrotate

$ ls -l /etc/cron.daily/logrotate 
-rwxr-xr-x 1 root root 180 May 18  2011 /etc/cron.daily/logrotate

手动运行

如果要使其手动运行,只需以root用户身份运行脚本:

$ sudo /etc/cron.daily/logrotate

如果看一下通常存在的脚本,它会向您展示如何logrotate通过简单地运行logrotate+配置文件的路径来手动运行。

#!/bin/sh

/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0

31

它应该通过cron自动执行。您可以强制它测试您的更改。

对于全局logrotate:

sudo logrotate -v -f /etc/logrotate.conf

对于单个conf文件:

sudo logrotate -v -f /etc/logrotate.d/someapp.conf

11
-f对于强制旋转,还有-d用于调试(也为空运行)的调试,它将打印本应执行但实际上不执行的所有操作。
ThorSummoner '16

5

在我的CentOS 6.5机器上,为nginx设置logrotate,我必须这样做:

logrotate /etc/logrotate.d/nginx

然后我检查logrotate是否像这样照顾我的新Nginx配置:

cat /var/lib/logrotate.status
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.