运行循环-但等待日志文件中的字符串继续

运行循环-但等待日志文件中的字符串继续

到目前为止我有这个:

for each in {01..10} ; do ./sb0$each/tomcat_sb0$each start;done

这将立即启动我的应用程序,但我希望它等到读取文件中的一行,最简单的方法是什么?

答案1

while ! grep "the line you're searching for" /path/to/the.file
do sleep 10; done
for each in {01..10} ; do ./sb0$each/tomcat_sb0$each start;done

此解决方案有一个while循环,只要文件中未找到您要搜索的行,该循环就会继续。循环仅包含sleep10 秒,因此它会每十秒检查一次您想要的行。显然,您可以将其设置为您想要的任何值。

在给定文件中搜索grep模式,如果没有匹配模式,则返回 false。表示!不匹配,并且由于 not false = true,只要命令grep返回 false,循环就会继续。

例如,如果你正在寻找以下行立即启动应用程序在文件中/var/tmp/foo.txt看起来像

 while ! grep "start the apps now chuck" /var/tmp/foo.txt;

如果该行存在则答案的长度不会为零,因此条件将返回 false 并且循环将退出。

相关内容