pure-ftpd将日志写入滚动日志文件(logrotate.d)



我们有一个相当大的依赖FTP消息传递的系统。/var/log/pureftpd.log处于监视之下,以响应特定的操作。

目前,我注意到一个有趣的问题,例如,pure-ftpd将新事件记录到旧日志文件(pureftpd.log.1)。

这种情况发生在FTP连接长时间打开的情况下。当logrotate通过重命名旧日志来旋转日志文件时。似乎当前活动的FTP连接仍然链接到旧文件,所有事件都写在那里。此问题将在FTP客户端重新连接后修复。

此行为使pureftpd监视无法注册某些事件。

如何使用logrotate来修复它。D或其他方法来确保所有新事件总是写入正确的日志文件,而无需重新连接FTP客户端?

pure-ftpd正在运行,默认设置和logrotate配置如下:

/var/log/pureftpd.log {
weekly
notifempty
missingok
}

谢谢你的推荐:)

对于打开文件描述符写入;logrotate不处理这些打开的句柄,因此它们将"跟随"到新旋转的文件。因此,你看到的行为。

我假设您必须在旋转文件后重新加载或重新启动pure-ftpd守护进程本身,例如假设systemd:

postrotate
systemctl reload pure-ftpd > /dev/null
endscript
我不知道这是否会杀死你所有的连接。但这就是你所看到的行为的来源。

最新更新