【发布时间】:2015-04-15 19:49:38
【问题描述】:
所以我有一个脚本可以启动服务并跟踪日志文件,直到服务最终初始化。我使用以下方法来实现这一点: Linux: Block until a string is matched in a file ("tail + grep with blocking")
现在,我希望我的用户在拖尾开始时看到拖尾文件的输出,以便他们跟踪服务的进度。我知道这方面的几种方法,例如生成一个新窗口并将所有尾部输出管道传输到新句柄。这仅在用户位于实际工作站但脚本通过 SSH 远程交互时才有效。所以这在我的情况下不起作用。
我希望这里有人知道如何将尾部传送到正在运行的窗口,同时将尾部文件的输出保持在一行。我想避免将所有输出都发送到脚本屏幕。
如果我太含糊,请告诉我。我可以发布一个屏幕截图来帮助更好地解释我想要实现的目标。
谢谢
【问题讨论】:
-
您使用了哪个答案?当您说“将尾部通过管道传输到正在运行的窗口,同时将尾部文件的输出保持在一行”时,您是希望显示整个日志还是只显示您正在搜索的行?
-
@EtanReisner 第一个答案。
grep -q 'PATTERN' <(tail -f file.log)。并希望将整个日志通过管道传输到执行脚本的窗口,但我希望我们可以将其截断为一行,而不是喷出所有输出。我希望我知道正确的术语,我相信这可能会帮助您更好地理解我的要求。 -
这是我不明白的部分。您希望如何在一行中显示整个日志文件?你的意思是你想要一行在日志中出现新行时不断更新?像“状态行”?
-
@EtanReisner 对此表示欢迎。这正是我正在寻找的。span>
-
类似的东西可能会工作,但对于终端我可能会使用 terminfo 序列而不是原始的回车。在运行
tail之前,您必须使用重复的文件描述符我认为这样做,虽然我可能会解决这个问题,但这些东西总是让我感到困惑并且花费的时间比我想象的要长,所以我可能不是最好的人提供帮助。