Caleb Jares Asked: 2017-12-13 09:32:58 +0800 CST2017-12-13 09:32:58 +0800 CST 2017-12-13 09:32:58 +0800 CST tail -f,但是当文件被删除并重新创建时(不附加) 772 我正在尝试查看日志文件的任何新输出。另一个脚本(不在我的控制之下)正在删除该文件,然后创建一个具有相同名称的新文件。由于文件正在被删除,使用tail -f不起作用。 tail 2 个回答 Voted Best Answer Stephen Kitt 2017-12-13T09:35:16+08:002017-12-13T09:35:16+08:00 如果您tail支持它,请使用tail -F,它可以很好地处理消失和重新出现的文件。只要确保你tail从一个将保持原位的目录开始。 -F是--follow=name --retry:的简写,tail将按名称而不是文件描述符跟踪文件,并在文件不可访问时重试(例如,因为它们已被删除)。 --follow=name(与with相关的一些错误--retry已在 coreutils 8.26 中修复,因此您可能会遇到早期版本的问题;例如,在删除包含尾部文件的目录时重试似乎仅适用于 8.26 或更高版本的所有情况。) Patrick Mevzek 2017-12-13T09:36:24+08:002017-12-13T09:36:24+08:00 看看你的 tail man 命令,有些有: --follow=name 它指示tail监视名称,而不是默认情况下的描述符。有了这样的选项,如果文件被删除并重新创建,tail就会看到它。正如手册中所写: 使用 --follow (-f),tail 默认跟随文件描述符,这意味着即使重命名了 tail 文件,tail 将继续跟踪其结尾。当您真的想跟踪文件的实际名称而不是文件描述符(例如,日志轮换)时,这种默认行为是不可取的。在这种情况下使用 --follow=name。这导致 tail 以适应重命名、删除和创建的方式跟踪命名文件。
如果您
tail
支持它,请使用tail -F
,它可以很好地处理消失和重新出现的文件。只要确保你tail
从一个将保持原位的目录开始。-F
是--follow=name --retry
:的简写,tail
将按名称而不是文件描述符跟踪文件,并在文件不可访问时重试(例如,因为它们已被删除)。--follow=name
(与with相关的一些错误--retry
已在 coreutils 8.26 中修复,因此您可能会遇到早期版本的问题;例如,在删除包含尾部文件的目录时重试似乎仅适用于 8.26 或更高版本的所有情况。)看看你的 tail man 命令,有些有:
它指示
tail
监视名称,而不是默认情况下的描述符。有了这样的选项,如果文件被删除并重新创建,tail
就会看到它。正如手册中所写: