postrotate 脚本未接收旋转的文件名

postrotate 脚本未接收旋转的文件名

我正在尝试对 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 返回日志文件路径

相关内容