等待字符串出现在日志文件中

等待字符串出现在日志文件中

我有一个日志文件,在程序运行期间会将文本附加到其中。我想知道特定字符串何时附加到文件末尾。

这里给出的所有解决方案: 监视文件直到找到字符串和这里:https://stackoverflow.com/questions/25959870/how-to-wait-till-a-particular-line-appears-in-a-file可以工作,但仅限于 Ubuntu。

我尝试在 Centos 7 上做同样的事情,但似乎没有结束命令。

我尝试过的一些东西在 Ubuntu 上有效但在 Centos 7 上无效:

( tail -f -n0 logfile & ) | grep -q "database start"

tail -n0 -f logfile  | sed '/database start/ q'

不知道为什么它在 CentOS 7 上不起作用,但在 Ubuntu 上却能工作。我更喜欢使用单个命令,而不是再次 sleep x 和 grep,因为该行应该是在文件中输出多次,而我只想要自从我开始检查文件以来的那个

我确实检查了日志文件并且确实出现了该行,但是没有任何命令停止。

答案1

“数据库启动”可能写成“数据库启动”吗?
默认的 grep 可能不会忽略大小写的变化,因此需 grep -i要这样做。

以下可能是更安全的语法:

grep -q "database start" <(tail -f logfile)

参考 : 如何等到文件中出现特定行

相关内容