我需要每天轮换 /var/log/messages 以保存 60 天,其中最后 30 个日志必须使用 bzip2 压缩。
这是我的 logrotate 配置:
/var/log/messages { daily
rotate 60
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
Run Code Online (Sandbox Code Playgroud)
但结果是每天保留最后 60 个未压缩的日志。如果添加compress,则所有 60 个日志都将被压缩。
那么有没有办法让它只压缩最后 30 个日志?
我认为 logrotate 没有这样的选项可以直接执行此操作。只有一个相关选项是delaycompress将压缩延迟一个日志轮换周期(在您的情况下为一天)。可能,您可以compresscmd通过编写一个 shell 脚本来使用该选项来检查您目前有多少日志文件并压缩/解压缩您想要的文件。
另一种可能性是安排日常cron工作来运行脚本来检查您的日志文件并压缩/解压缩您想要的内容。
| 归档时间: |
|
| 查看次数: |
2006 次 |
| 最近记录: |