如何减少文件名而不是 inode 编号?

Ale*_*ain 11 less logs solaris tail

我有一个软件可以在它重新启动时轮换它的日志文件。但是,在开发过程中,我经常重启,所以我想随时监控最新的日志文件。

如果我less正常启动less program.log并按Shift+f到尾部,当日志文件轮换时,我继续监视旧日志文件。我认为这是因为 inode 编号保持不变并且less具有该 inode 的打开文件句柄。

是否可以监视当前调用的任何日志文件的最新活动program.log

具体来说,我在 Sun OS 上工作,所以在那里工作的解决方案将是理想的。

Sté*_*las 18

less --follow-name如果您的版本less支持它,请使用它。
该选项是在版本 416 中引入的。

然后Shift+Fless.


Vol*_*gel 6

less选项--follow-name只是解决方案的一部分;
要替换tail -F,需要另一个参数:

less --follow-name +F file.log
Run Code Online (Sandbox Code Playgroud)

单独的选项less --follow-name file.log实际上不会在文件更新后开始。您需要按 进入跟随模式ShiftF
(退出模式以通过 导航ControlC。)

而不是跟随文件,--follow-name 修改less的行为
它根据文件名而不是文件描述符ShiftFlessfollow里面创建命令键。

此外,less在跟随模式下启动没有正常选项。
但是您可以使用命令行在启动后执行击键,方法是在它们前面加上+.
将修饰符选项与+F,结合使用,less实际上会以(修改后的)跟随模式启动。

+F单独使用相当于 plain tail -f

less +F file.log
Run Code Online (Sandbox Code Playgroud)