当 logrotate 通过 systemd 启动时,较新版本的 logrotate 无法执行调用 Java 的 postrotate 操作。在我的日志中,我看到:
logrotate[123]: Error occurred during initialization of VM
logrotate[123]: Failed to mark memory page as executable - check if grsecurity/PaX is enabled
答案1
以下提交为 logrotate 的 systemd 脚本添加了强化选项: https://github.com/logrotate/logrotate/commit/1008bdf391e35684d8eeb2217c859f11e273ebb3
这些变化随 logrotate v3.14(也包含在 2019 年 7 月发布的 Debian 10 中)一起发布。
配置的选项之一 ( MemoryDenyWriteExecute=true
) 导致 Java 程序执行失败。将此选项设置为 可以false
解决我的问题,但可能会降低系统的安全性/强化程度。