我们有一个相当大的依赖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
我不知道这是否会杀死你所有的连接。但这就是你所看到的行为的来源。