我有一个logrotate脚本,它被构造为轮转syslog收集的日志。 该脚本的一部分是重新加载syslog进程。 问题是系统日志重新加载运行每个匹配的日志文件它旋转,并有大约100个。 在所有单独的日志处理之后,如何设置logrotate脚本来重新加载syslog进程一次?
/logs/* { daily rotate 7 compress postrotate /etc/init.d/syslog-ng reload 2>/dev/null endscript }
/logs/*
^^^你的通配符也和你的* .gz文件相匹配,除了你真正关心的文件之外,还在旋转这些文件。 优化你的匹配规则,只包括你感兴趣的文件,你应该全部设置。
使用sharedscripts :
通常,logrotate在每次旋转日志时运行postrotate脚本。 对于使用相同configuration块的多个日志也是如此。 例如,引用访问日志和错误日志的Web服务器configuration块(如果同时旋转)将运行postrotate脚本两次(每个文件旋转一次)。 如果两个文件都旋转,则Web服务器将重新启动两次。
为了防止logrotate为每个日志运行该脚本,可以包含以下命令:
sharedscripts该命令告诉logrotate在运行postrotate脚本之前检查该configuration块的所有日志。 如果一个或两个日志都被旋转,则postrotate脚本只运行一次。 如果没有日志被旋转,则postrotate脚本不会运行。