首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >旋转一个随时打开并被写入的文件

问旋转一个随时打开并被写入的文件
EN

Server Fault用户
提问于 2013-01-28 22:28:47
回答 2查看 8.1K关注 0票数 13

我有一个linux应用程序,它不断地将日志信息写入日志文件,例如。/var/log/application.log。由于应用程序不能自动旋转文件,这个日志文件可以在几周内达到千兆字节的大小,所以我希望能够正确地旋转这个文件。

这里我主要关心的是,要旋转应用程序在任何时候打开的文件,我可能需要:

  1. 将文件移动到其旋转形式/var/log/application.log -> /var/log/application.log.2013-01-28
  2. 创建一个空的/var/log/application.log。Obs:此时,应用程序仍在写入/var/log/application.log.2013-01-28
  3. 将应用程序进程的文件描述符更改为再次指向/var/log/application.log

所以,我说的对吗?如果是的话,我怎样才能做到呢?(主要是更改文件描述符部分)

如果我不是,什么是正确的方式和如何做呢?

EN

回答 2

Server Fault用户

回答已采纳

发布于 2013-01-29 00:14:08

编写logrotate配置以使用copytruncate

代码语言:javascript
复制
copytruncate
    Truncate the original log file in place after creating a copy, instead of moving the 
    old log file and optionally creating a new one. It can be used when some program
    cannot be told to close its logfile and thus might continue writing (appending) to
    the previous log file forever. Note that there is a very small time slice between
    copying the file and truncating it, so some logging data might be lost. When this
    option is used, the create option will have no effect, as the old log file stays
    in place.
票数 15
EN

Server Fault用户

发布于 2013-01-28 22:31:57

大多数这样的应用程序响应一个信号,如SIGHUP,并将关闭和重新打开他们的日志文件在收到信号。检查应用程序的文档,以获得要发送的正确信号。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/473232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档