Linux 管道尾部输出到当前正在运行的bash脚本

Linux 管道尾部输出到当前正在运行的bash脚本,linux,bash,shell,Linux,Bash,Shell,所以我有一个脚本,它启动一个服务并跟踪日志文件,直到服务最终初始化。为此,我采用了以下方法: 现在,我想让我的用户在跟踪开始时看到跟踪文件的输出,这样他们就可以跟踪服务的进度。我知道一些方法来解决这个问题,例如生成一个新窗口,并将所有尾部输出管道化到新句柄。这仅在用户位于实际工作站,但脚本通过SSH进行远程交互时有效。所以这对我来说是行不通的 我希望这里有人知道如何通过管道将尾部传输到正在运行的窗口,同时将尾部文件的输出保持在一行。我希望避免将所有输出都喷到脚本屏幕上 如果我说得太含糊,请告诉

所以我有一个脚本,它启动一个服务并跟踪日志文件,直到服务最终初始化。为此,我采用了以下方法:

现在,我想让我的用户在跟踪开始时看到跟踪文件的输出,这样他们就可以跟踪服务的进度。我知道一些方法来解决这个问题,例如生成一个新窗口,并将所有尾部输出管道化到新句柄。这仅在用户位于实际工作站,但脚本通过SSH进行远程交互时有效。所以这对我来说是行不通的

我希望这里有人知道如何通过管道将尾部传输到正在运行的窗口,同时将尾部文件的输出保持在一行。我希望避免将所有输出都喷到脚本屏幕上

如果我说得太含糊,请告诉我。我可以发布一个截图来帮助更好地解释我想要实现的目标


谢谢

我不确定我是否清楚地了解了您的所有需求,ssh是100%必需的吗

这里有一个你可以做到的方法:

#if grep command succeeds then enter infinite loop to repeatedly post to netcat server for remote processing
if (grep -q 'PATTERN'); then
  while :
      tail -n 1 | nc -l 3333
您可以通过以下方式连接到它:

nc <you_other_server's_ip> 3333

nc您在那里使用了哪个答案?当您说“将尾部导入正在运行的窗口,同时将尾部文件的输出仅保留为一行”时,您是想显示整个日志还是只显示您正在搜索的行,这是什么意思?@EtanReisner第一个答案<代码>grep-q“模式”,这是我不理解的部分。您希望如何在一行上显示整个日志文件?你的意思是你想要一行在日志中出现新行时不断更新吗?就像一条“身份线”?@EtanReisner为此欢呼。这正是我要寻找的。类似的东西可能会工作,但对于一个终端,我可能会使用terminfo序列,而不仅仅是一个原始的回车。在运行
tail
之前,您必须先复制文件描述符,我想这样做,虽然我可能会解决这个问题,但这件事总是让我感到困惑,花费的时间比我想象的要长,所以我可能不是最好的帮助人。您每行生成一个tail进程。。。这不管用吗?(我现在不能尝试):{grep-q'PATTERN'&&tail-f;}nc-l3333