logrotate 旋转日志文件后,日志文件变为空白

logrotate 旋转日志文件后,日志文件变为空白

我有一台运行 openvpn 的 ubuntu 8.04 LTS 服务器。openvpn 服务器将写入 /var/log 下的标准日志文件,一个月前 logrotate 会自动轮换文件并压缩它们。

文件仍在轮换,但新的日志文件 (ovpn.log) 为空。重新启动 openvpn 守护进程可修复此问题(即:openvpn 将状态事件写入文件),但大约 10 天后文件再次轮换,openvpn 无法再次写入日志文件。这也很奇怪,因为 logrotate 设置为每 6 个月轮换一次。

Openvpn 以 nobody 身份运行,日志文件由 root 和 admin 拥有,这很奇怪,因为如果权限是原因,它应该始终工作或根本不工作,除非 openvpn 暂时以 root 身份运行,然后在初始化后降至 nobody?

答案1

OpenVPN 可能仍在写入旧日志文件(启动时打开用于写回的文件(inode))。

Logrotate 需要通知 OpenVPN 守护进程其日志文件已被移交,以便 OpenVPN 可以打开新的日志文件(这通常是通过信号完成的,但停止/重新启动整个守护进程具有相同的效果。检查 OpenVPN 手册页和您的“postrotate”脚本)。

或者,您可以将 OpenVPN 配置为使用 syslog,因为当它滚动您的日志文件时logrotate应该发出通知syslogd(否则您的所有日志文件都将是空白的)。

答案2

您的/etc/logrotate.d/openvpn(或类似文件) 是否有postrotate发送的操作SIGHUP?这应该会告诉守护进程日志文件已被轮换。

答案3

这听起来像是 logrotate 配置坏了。

您是否升级了 logrotate 和/或 openvpn?

答案4

尝试将选项“copytruncate”添加到 Openvpn 的 logrotate 配置中。此选项可能会修复此问题。

相关内容