【问题标题】:How do I get logrotate to obey logrotate.d/uwsgi instead of uwsgi.ini? (Centos 6)如何让 logrotate 服从 logrotate.d/uwsgi 而不是 uwsgi.ini? (Centos 6)
【发布时间】:2019-03-02 17:34:29
【问题描述】:

因此,似乎设置最大日志旋转大小仅在 uwsgi.ini 中设置而不是 /etc/logrotate.d/uwsgi 时有效(即使使用 /etc/logrotate.d/uwsgi 文件手动测试 logrotate 也有效,并且我在 cron 或 logrotate 状态日志中看不到任何错误)。

/var/log/uwsgi/*.log {
daily
missingok
dateext
rotate 7
size 100M
copytruncate
create
compress
}

是否有设置让 logrotate 使用上面的而不是 uwsgi.ini?

【问题讨论】:

    标签: linux uwsgi centos6 logrotate


    【解决方案1】:

    我看到你有copytruncate 这是正确的。如果不这样做,则必须使用 postrotate 停止并重新启动 UWSGI。

    正如您提到的手动触发 /etc/logrotate.d/uwsgi 有效,这似乎是您的 cron 作业的问题。

    您可以将其放入/etc/cron.d/,然后在/tmp/logrotate.status 运行后检查其输出(修改调度表达式以满足您的调试需求)。

    0 2 * * * root logrotate /etc/logrotate.d/uwsgi --state /tmp/logrotate.status
    

    如果您需要有关计划表达式的帮助,请查看此 crontab.guru 链接。

    【讨论】:

    • 以上测试有效,但 'logrotate.d/uwsgi' 仍然被忽略。 9 月 27 日 01:31:41 my-api anacron[30805]:作业 cron.daily' started Sep 27 01:31:41 my-api run-parts(/etc/cron.daily)[30806]: starting logrotate Sep 27 01:31:51 my-api run-parts(/etc/cron.daily)[30874]: finished logrotate Sep 27 01:31:51 my-api run-parts(/etc/cron.daily)[30806]: starting makewhatis.cron Sep 27 01:31:51 my-api run-parts(/etc/cron.daily)[31032]: finished makewhatis.cron Sep 27 01:31:51 my-api anacron[30805]: Job cron.daily' 终止(邮件输出) 9 月 27 日 01:31:51 my-api anacron[30805]:正常退出(1 个作业运行)
    • 真正困扰我的是,在 logrotate.d 下还有其他旋转配置(如 nginx - 正常工作)以及 uwsgi。我不明白为什么 nginx 会工作,但 uwsgi 不会——它们有相同的设置。我还比较了权限和所有内容。我想知道 uwsgi.ini 是否有一些我看不到的总体优先级。
    • 上述测试工作是什么意思,但 logrotate.d/uwsgi 仍然被忽略?上述测试仅针对 logrotate.d/uwsgi 运行。你能显示/tmp/logrotate.status 的输出吗?您还介意再次确认手动触发它有效吗?
    • 所以只需输入命令logrotate /etc/logrotate.d/uwsgi --state /tmp/logrotate.status 就可以了,logrotate.status 文件显示:logrotate state -- version 2 "/var/log/uwsgi/uwsgi.log" 2018-9-28 但是当我把它放在 /etc/cron.d/ 中(并安排它运行)时,它不起作用。
    • 实际上调度它工作,只要我使用/usr/sbin/logrotate
    【解决方案2】:

    问题的原因源于 SELinux 安全上下文,其中包含在原始 logrotate 配置中的日志目录没有正确的安全权限。所以当我一直在做ls -al 时,我找不到任何错误,因为它没有显示每个目录/文件的 SELInux 安全设置。我必须做ls -Z 或类似的事情。

    【讨论】:

      猜你喜欢
      • 2013-12-28
      • 2019-12-12
      • 2014-08-08
      • 2010-12-09
      • 2014-04-11
      • 1970-01-01
      • 2013-04-18
      • 2014-03-11
      相关资源
      最近更新 更多