2011-05-26 35 views
53

我正在创建一个写入日志文件的应用程序,并且我需要知道在Linux/Bash中如何持续显示日志文件到屏幕(使用每一个新行更新屏幕放入日志中)。Bash脚本日志文件显示不断屏幕

作为一个例子,我们可以说我想推动运行日志apache/error.log到屏幕(ssh终端)不断更新。

+0

http://unix.stackexchange.com/questions/45626/output-file-contents-while-they-change – 2016-07-14 10:55:49

回答

80

尝试tail命令:

tail -f filename 
+1

vu现在我觉得自己像个白痴。我一直使用tail命令,(只是没有使用-f参数)。男人的尾巴会是我的朋友。谢谢,我正在寻找什么!当它允许(9min) – 2011-05-26 19:19:45

+0

vu会接受答案这甚至比写脚本更好(虽然可以添加到脚本,我想也是) – 2011-05-26 19:25:42

+2

与选项' - follow = name'你会即使该文件已被cron作业旋转/重新创建,也要确保显示日志文件的内容。 – 2011-05-26 21:12:39

5

ssh {remotehost} tail -n0f {logfile}

这会给你最初为零线,并连续打印出现在文件中的任何新线。

+0

优秀的谢谢! – 2011-05-26 19:23:03

21

另一种解决方案是

less +F filename 

或只是less filename并输入 “F” 到它(按压 + ˚F)。它可以比tail更好,因为它可以让你取消连续打印临时,去落后看起来与“F”(转变 + ˚F)再次

+0

我正在记笔记,这是一个很好的选择! – 2011-05-26 19:30:31

+0

另外,它可以用'-S'标志截断长长的线条**,您可以通过它们向左/向右滚动。优于'tail -f file.log |切...方法。 – sevko 2014-12-11 15:07:26

+0

我不明白关键组合。先按'F'然后按'Shift'?或者同时按下它们?我尝试过,但没有任何区别。 – becko 2015-03-13 17:10:08

5

您还可以重新启用它:

less filename.txt 
and press 'F' 

有一个加号 - 您可以随时按住CTRL-C并回滚到日志,然后开始再次用'F'查看。

+0

我对这些问题的反应时间非常惊讶,我试着回答几个问题,并且有很多人在这里刷新按钮时比我更快。谢谢你的回答/提示以及 – 2011-05-26 19:31:36

8

watch命令也可以使用。

watch tail logfile 

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

是的,使用tail -f是传统的解决方案,但取决于你正在尝试做什么,这可能会更好。

+0

更多笔记。 Linux =一百万种方法让同一只猫变皮肤:)谢谢 – 2011-05-26 19:33:24