相关疑难解决方法(0)

监视文件直到找到字符串

我正在使用 tail -f 来监视正在积极写入的日志文件。当某个字符串被写入日志文件时,我想退出监控,并继续我的脚本的其余部分。

目前我正在使用:

tail -f logfile.log | grep -m 1 "Server Started"
Run Code Online (Sandbox Code Playgroud)

找到字符串后,grep 按预期退出,但我需要找到一种方法使 tail 命令也退出,以便脚本可以继续。

bash grep tail logfiles

70
推荐指数
7
解决办法
12万
查看次数

为什么不是`tail -f ... | grep -q ...` 在找到匹配项时退出?

我正在做一个非常标准的tail+ grep

tail -f some_log_file.txt | grep -q known-string
Run Code Online (Sandbox Code Playgroud)

如果我运行没有以下命令的命令-q

tail -f some_log_file.txt | grep known-string
Run Code Online (Sandbox Code Playgroud)

我看到输出:

[Tue Feb 12 11:32:45 2019] known-string.
Run Code Online (Sandbox Code Playgroud)

所以我知道grep是匹配的。但是,当我添加-qgrep 命令并没有退出时,它只是挂在那里等待更多输出......即使手册页说它会“如果找到任何匹配项,它将立即以零状态退出”:

   -q, --quiet, --silent
          Quiet;  do  not  write  anything  to  standard   output.    Exit
          immediately  with  zero status if any match is found, even if an
          error was detected.  Also see the -s or --no-messages option.
Run Code Online (Sandbox Code Playgroud)

谁能解释为什么-q不导致我的 grep 退出?我试图将 a 链接&& beep到最后,以便在grep找到匹配项时发出哔哔声,但除非我可以让它退出,否则将无法正常工作。

linux grep tail

5
推荐指数
2
解决办法
1479
查看次数

管道和观察管道输出?

我想制作一个像这样的外壳管道:

producer | analyser > report.txt
Run Code Online (Sandbox Code Playgroud)

producer并在生成数据(一个大日志文件)时观察输出以进行分析。

我怎样才能做到这一点?

bash shell redirection

2
推荐指数
1
解决办法
434
查看次数

标签 统计

bash ×2

grep ×2

tail ×2

linux ×1

logfiles ×1

redirection ×1

shell ×1