Bash 脚本日志文件连续显示到屏幕上

Posted

技术标签:

【中文标题】Bash 脚本日志文件连续显示到屏幕上【英文标题】:Bash script log file display to screen continuously 【发布时间】:2011-09-02 21:13:02 【问题描述】:

我正在创建一个写入日志文件的应用程序,我需要知道如何在 Linux / Bash 中将日志文件连续显示到屏幕上(在日志中添加每一行更新屏幕)。

例如,假设我想将apache/error.log 的运行日志推送到屏幕(ssh 终端)不断更新。

【问题讨论】:

unix.stackexchange.com/questions/45626/… 【参考方案1】:

试试tail命令:

tail -f filename

【讨论】:

vu 现在我觉得自己像个白痴。我一直使用 tail 命令(只是不使用 -f 参数)。 man tail 本来是我的朋友。谢谢,正是我想要的!允许时会接受答案(9 分钟) vu 这比写脚本还要好:)(虽然我想也可以添加到脚本中) 使用 --follow=name 选项,即使文件已被 cron 作业旋转/重新创建,您也可以确保显示日志文件的内容。 @aaron 只是一个注释,因为您提到您正在创建应用程序,然后计划跟踪日志,请注意理解,仅仅因为您在应用程序中写了一行并不意味着由于输出可能被缓冲,该行已显示在日志中。【参考方案2】:

ssh remotehost tail -n0f logfile

这会给你一开始的零行,并连续打印文件中出现的任何新行。

【讨论】:

【参考方案3】:

另一种解决方案是

 less +F filename

或者只是 less filename 并在其中输入“F”(按 shift+f)。它可能比tail 更好,因为它允许您暂时取消连续打印,向后查看并使用“F”重新启用它(shift+f)再次

【讨论】:

我在做笔记,这是个不错的选择! 另外,它可以使用-S 标志为您截断长行开箱即用,同时允许您向左/向右滚动它们。优于tail -f file.log | cut ... 方法。 我不明白组合键。先按F 然后按Shift?还是同时按下?我试过了,但没有任何区别。 becko,谢谢,只需键入“F”(Shift + F) - 按住 Shift,然后按 f,然后松开两个键。编辑了我的答案。【参考方案4】:

您还可以:

less filename.txt
and press 'F'

有一个优点 - 您可以随时 CTRL-C 并在日志中向后滚动并使用“F”重新开始观看。

【讨论】:

我对这些问题的响应时间感到非常惊讶,我尝试回答几个问题,这里有很多人在刷新按钮上的速度比我快 :) 感谢您的回答/提示还有【参考方案5】:

watch 命令也可以使用。

watch tail logfile

会显示日志文件的最后 5 行。它可以扩展到任何将内容打印到标准输出的命令。

是的,使用 tail -f 是传统的解决方案,但根据您要执行的操作,这可能会更好。

【讨论】:

更多笔记。 Linux = 一百万种给同一只猫换皮的方法 :) 谢谢

以上是关于Bash 脚本日志文件连续显示到屏幕上的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Popen 同时写入标准输出和日志文件?

如何从 bash 脚本将消息记录到特定路径中的日志文件

从 bash 脚本本身将 stdout 的副本重定向到日志文件

如何使用 bash 监视目录中新创建的文件?

将日志插入 BigQuery 表的 Bash 脚本

执行 bash 脚本时隐藏 Gitlab 管道日志中的变量值