gpt4 book ai didi

tail - "tail -f"和 logrotate 如何工作?

转载 作者:行者123 更新时间:2023-12-04 07:01:35 26 4
gpt4 key购买 nike

当我为日志文件运行 tail -f 时,logrotate 旋转它但 tail -f 没有停止。它继续在新文件中显示日志。之后我手动尝试;

mv my.log my.log.2
touch my.log
echo "test text" >> my.log
echo "test text" >> my.log

它不起作用。 logrotate 如何旋转日志?它是否将所有行复制到新文件?

注意:我正在使用 centos 5。

最佳答案

即使文件被删除、重命名等,您也可能希望使用 tail -F 代替(大写 -F)。

  tail -F my.log

tail -f(小写)仅使用文件描述符,不关心文件名是什么。 tail -F 使用文件名,因此如果您删除或重命名原始文件并放置一个新文件,它将拾取新文件。

至于 logrotate,它有几种不同的工作方式。默认情况下,它会移动(重命名)原始文件,并创建一个新的空文件。在这种情况下,文件描述符会为日志进程维护,直到它关闭并重新打开,然后它将获取新文件。

如果您使用 logrotate "copytruncate"选项,则文件和文件描述符都将保留,并且 logrotate 将所有数据复制到新文件中,截断原始文件并将原始文件保留在原位。一些进程不关闭它们的日志文件,所以使用 copytruncate 是必要的。没有它,该进程将继续以新名称登录到该文件。

此行为是设计使然,在 UNIX 中,打开文件的文件描述符不受重命名或删除操作的影响。

关于tail - "tail -f"和 logrotate 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23822899/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com