Logrotate 不会旋转带有空格的日志

Logrotate 不会旋转带有空格的日志

我有一个日志文件,由我的服务生成,文件名为“Feed1 - 1.stat”。logrotate 拒绝轮转此文件,但是仅通过 cron 运行时。通过 shell 运行 logrotate 将正确旋转文件。将配置和日志文件更改为没有空格也将导致文件正确旋转。

以下是脚本的相关部分:

"/opt/myservice/statistics/continuous/Feed1 - 1.stat"
{
  rotate 60
  daily
  missingok
  notifempty
  compress
  delaycompress
  postrotate
    /usr/bin/killall -HUP myservice
  endscript
}

下面是启动 logrotate 的 cron 条目(Ubuntu 默认):

#!/bin/sh

# Clean non existent log file entries from status file
cd /var/lib/logrotate
head -1 status > status.clean
sed 's/"//g' status | while read logfile date
do
    [ -e "$logfile" ] && echo "\"$logfile\" $date"
done >> status.clean
mv status.clean status

test -x /usr/sbin/logrotate || exit 0
/usr/sbin/logrotate /etc/logrotate.conf

我怀疑这可能与环境变量有关?我可以看到 cron 环境相当稀疏,但不知道如何从这里进行调试。

有什么想法吗?谢谢 :-)


Ubuntu 11.04 Natty 64 位

2.6.38-8-服务器

logrotate 3.7.8-6ubuntu3.1


编辑:

  • 重写了问题,因为我发现它与通配符匹配无关

答案1

Ubuntu logrotate cron 脚本已损坏,会从状态文件中删除双引号。然后,它会检查文件是否存在,但文件不存在,因为引号消失了,然后删除该行。然后,logrotate 在执行时重新添加该行,但由于刚刚添加,因此不会旋转。永无止境。

我将在 Launchpad 上提交错误。

编辑:以下是错误报告:https://bugs.launchpad.net/ubuntu/+source/logrotate/+bug/932225

答案2

听起来像是权限问题。你检查过吗?{我假设你在控制台中以 root 身份执行 lograte}

除此之外,需要指出的是,您可以随时按大小旋转它,而不仅仅是按时间。

相关内容