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


75

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

因此,举个例子,假设我想将正在运行的日志推apache/error.log送到屏幕(ssh终端)中,以不断更新。


Answers:


109

尝试tail命令:

tail -f filename

2
现在好了,我觉得自己是个白痴。我一直在使用tail命令(只是不使用-f参数)。男人的尾巴会是我的朋友。谢谢,正是我想要的!!允许时(9分钟)将接受答案
Aaron Murray

vu这比编写脚本还要好:)(尽管我想也可以将其添加到脚本中)
Aaron Murray

2
使用该选项--follow=name,即使cron作业已旋转/重新创建了日志文件的内容,也将确保其显示内容。
塞德里克·朱利安

2
@aaron自从您提到您正在创建应用程序,然后计划尾随日志起,请注意,只是要小心理解,仅因为您在应用程序中写了一行并不意味着该行已显示在日志中因为可以缓冲输出。
Frank

28

另一个解决方案是

 less +F filename

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


我正在做笔记,这是一个很好的选择!
亚伦·默里

另外,它还可以为带有标志的框将长行截断-S,同时允许您左右滚动它们。优于该tail -f file.log | cut ...方法。
sevko 2014年

我不了解按键组合。先按F然后Shift?还是同时按下它们?我试过了,但没关系。
becko

1
becko,谢谢,只需键入“ F”(Shift + F)-按住Shift,然后按f,然后松开两个键。编辑了我的答案。
osgx

11

watch命令也可以使用。

watch tail logfile

将向您显示日志文件的最后5行。它可以扩展到将内容输出到stdout的任何命令。

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


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

6

ssh {remotehost} tail -n0f {logfile}

最初,您将获得零行,并连续打印文件中出现的所有新行。


6

你也可以:

less filename.txt
and press 'F'

具有一个加号-您可以随时按CTRL-C并向后滚动日志,然后再次使用“ F”开始观看。


1
我对问题的回答时间感到非常惊讶,我尝试回答几个问题,这里的刷新按钮比我快很多人:)同样感谢您的回答/技巧
Aaron Murray
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.