如何让 logrotate 服从 logrotate.d/uwsgi 而不是 uwsgi.ini? (森托斯 6)
How do I get logrotate to obey logrotate.d/uwsgi instead of uwsgi.ini? (Centos 6)
所以设置最大日志轮转大小似乎只有在 uwsgi.ini 中设置时才有效,而不是 /etc/logrotate。d/uwsgi(即使使用 /etc/logrotate 手动测试 logrotate .d/uwsgi 文件有效,我在 cron 或 logrotate 状态日志中没有看到任何错误)。
/var/log/uwsgi/*.log {
daily
missingok
dateext
rotate 7
size 100M
copytruncate
create
compress
}
是否有设置使 logrotate 使用上述而不是 uwsgi.ini?
我看到您 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 link。
问题的原因源于 SELinux 安全上下文,其中包含在原始 logrotate 配置中的日志目录没有正确的安全权限。所以当我一直做 ls -al
时,我找不到任何错误,因为它没有显示每个 directory/file 的 SELInux 安全设置。我不得不做 ls -Z
或类似的事情。
所以设置最大日志轮转大小似乎只有在 uwsgi.ini 中设置时才有效,而不是 /etc/logrotate。d/uwsgi(即使使用 /etc/logrotate 手动测试 logrotate .d/uwsgi 文件有效,我在 cron 或 logrotate 状态日志中没有看到任何错误)。
/var/log/uwsgi/*.log {
daily
missingok
dateext
rotate 7
size 100M
copytruncate
create
compress
}
是否有设置使 logrotate 使用上述而不是 uwsgi.ini?
我看到您 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 link。
问题的原因源于 SELinux 安全上下文,其中包含在原始 logrotate 配置中的日志目录没有正确的安全权限。所以当我一直做 ls -al
时,我找不到任何错误,因为它没有显示每个 directory/file 的 SELInux 安全设置。我不得不做 ls -Z
或类似的事情。