Tail 命令 - 在 Solaris 上跟随名称

Tail command - follow by name on Solaris

有没有办法在 Solaris 10 上按名称跟踪文件? 相当于:

tail --follow=name

solaris 上的 tail 手册显示没有这样的选项。仅包含 -f,看起来它按描述符跟随文件。

如您所见,Solaris 没有 --follow。

解决方法是重定向:

tail -f inputfile > filewritten_by_tail

最好的办法是从 source 或某些免费软件存储库安装 GNU find

如果您真的想坚持使用捆绑的 Solaris 10 find,您需要用自定义监控程序包装它,如果目标文件更新,该程序将重新启动它。

根据 GNU tail manual--follows-f 相同:

-f, --follow[={name|descriptor}]
    output appended data as the file grows;

    an absent option argument means 'descriptor'

tail 的 POSIX 描述中找到了一个 -f 选项。但是,--follows 选项(接受选项 value)不在 POSIX 中。 GNU 手册继续描述 --follow 选项不同于 -f:

With --follow (-f), tail defaults to following the file descriptor, which means that even if a tail'ed file is renamed, tail will continue to track its end. This default behavior is not desirable when you really want to track the actual name of the file, not the file descriptor (e.g., log rotation). Use --follow=name in that case. That causes tail to track the named file in a way that accommodates renaming, removal and creation.

也就是说,--follow 提供了在实际文件被重命名时重新打开文件的功能。 POSIX 似乎没有解决这个用例。

Solaris 与 POSIX 的区别没有直接等价物(比较 manual 中的 /usr/bin/tail/usr/xpg4/bin/tail)。

GNU tailcoreutils 软件包的一部分。您可能已经在 /opt/sfw/bin/tail 中的 Solaris 10 上安装了它。例如,pkginfo 在我的 Solaris 10 机器上显示为 SFWcoreu.

在 solaris 11 上工作得很好!

/usr/bin/gtail -F