观看(旋转)登录屏幕

观看(旋转)登录屏幕

我正在运行一个使用 SSH 连接的邮件服务器。我的.bash_profile配置是将 SSH 会话附加到某个screen会话。

现在我想将日志(例如 syslog)打印到此屏幕会话的一个窗口中。我尝试运行

tail -f /var/log/syslog

但输出每天在 6:25 停止。我猜那是日志轮换的时间。那么有没有办法将日志打印到屏幕上?

答案1

你需要tail --follow=name /var/log/syslog

原因是默认情况下(据说是出于性能原因)tail 会打开指定的文件,然后监视文件描述符它从更改调用中获取open(2)。只要文件被更改(追加或甚至重写(通过先截断)),这种方法就可以正常工作,但如果文件被取代— 即删除并以相同的名称创建,这就是logrotate通常所做的。

“名称”模式使用更昂贵的系统--follow调用,它实际上每次都通过文件系统层“解析”文件的名称,并且如果注意到文件更改了其所谓的tailstat(2)tail“inode”tail重新打开文件。

输出来自man tail

-f, --follow[={name|descriptor}]

随着文件的增长输出附加数据;缺少选项参数意味着“描述符”

您还可以查看-F命令行选项,其定义为

-F与...一样--follow=name --retry

答案2

你的猜测其实是正确的。此时 syslog 中断写入日志,将其压缩并重新启动日志。

你可以尝试

tail -f --retry /var/log/syslog

这样,当日志轮换完成后,tail 应该重试重新打开文件

相关内容