我正在尝试对 exim 日志进行一些处理,但我的脚本没有接收旋转的日志文件名作为参数 - 相反,它获取的是原始日志文件名(不再存在)
/var/log/exim/*log" {
daily
rotate 3650
delaycompress
missingok
notifempty
nosharedscripts
postrotate
echo $0 $1 $2 >> /tmp/out
/path/to/script $1
endscript
}
/tmp/out 中的结果:
logrotate_script /var/log/exim/main.log
我在跑
logrotate --force -v /etc/logrotate.conf
输出似乎表明它正在重命名,然后运行:
renaming /var/log/exim/main.log to /var/log/exim/main.log-20160105
running postrotate script
这是在 amazon linux 实例上。我尝试过使用 sharedscripts 和 nosharedscripts 选项,没有任何区别。
我如何才能获得旧的重命名文件名?
答案1
如果结果日志文件是 (logfilepath).(log)-(20160105) 格式,也许您可以尝试这个:
postrotate
DATE=`date '+%Y%m%d'`
/path/to/script $1-$DATE
endscript
如果您想要 (logfilepath)-(20160105).(log) 格式,您可以使用:
postrotate
DATE=`date '+%Y%m%d'`
LOGF=${1%*.}
/path/to/script $LOGF-$DATE.log
endscript
使用 $1 返回日志文件路径