我有一个日志文件,在程序运行期间会将文本附加到其中。我想知道特定字符串何时附加到文件末尾。
这里给出的所有解决方案: 监视文件直到找到字符串和这里: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)
参考 : 如何等到文件中出现特定行。