我有一个运行 openvpn 的 ubuntu 8.04 LTS 服务器。openvpn 服务器写入 /var/log 下的标准日志文件,一个月前 logrotate 会自动轮换文件并压缩它们。
文件仍在轮换中,但新的日志文件 (ovpn.log) 为空。重新启动 openvpn 守护程序解决了问题(即:openvpn 将状态事件写入文件)但大约 10 天后文件再次轮换 openvpn 无法再次写入日志文件。这也很奇怪,因为 logrotate 设置为每 6 个月轮换一次。
Openvpn 以无人身份运行,并且日志文件由 root 和管理员拥有,这很奇怪,因为如果权限是原因,它应该始终工作或根本不工作,除非 openvpn 临时以 root 身份运行,然后在初始化后下降到无人?
OpenVPN 可能仍在写入旧日志文件(它在启动时打开用于回写的文件(inode))。
Logrotate 需要通知 OpenVPN 守护程序其日志文件已被翻转,以便 OpenVPN 可以打开新的日志文件(这通常通过信号完成,但停止/重新启动整个守护程序具有相同的效果。检查 OpenVPN 手册页和您的“后旋转”脚本)。
或者,您可以将 OpenVPN 配置为使用 syslog,因为它
logrotate
应该syslogd
在滚动您的日志文件时发出通知(或者您的所有日志文件都是空白的)。您的
/etc/logrotate.d/openvpn
(或类似文件)是否有postrotate
发送的操作SIGHUP
?这应该告诉守护程序日志文件已被轮换。这听起来像 logrotate 配置被破坏了。
您是否升级了 logrotate 和/或 openvpn?
尝试将选项“copytruncate”添加到 Openvpn 的 logrotate 配置中。此选项可能会解决此问题。