我正在使用 tail -f 来监视正在积极写入的日志文件。当某个字符串被写入日志文件时,我想退出监控,并继续我的脚本的其余部分。
目前我正在使用:
tail -f logfile.log | grep -m 1 "Server Started"
Run Code Online (Sandbox Code Playgroud)
找到字符串后,grep 按预期退出,但我需要找到一种方法使 tail 命令也退出,以便脚本可以继续。
我正在寻找一种以编程方式观察命令输出的方法,直到观察到特定字符串然后退出。这与this question非常相似,但我不想拖尾文件,而是要“拖尾”命令。
就像是:
看 -n1 my_cmd | grep -m 1 "我正在寻找的字符串"
(但这对我不起作用。)
更新:我需要澄清“my_cmd”不会连续输出文本,而是需要重复调用直到找到字符串(这就是我想到“watch”命令的原因)。在这方面,“my_cmd”就像许多其他 unix 命令,例如:ps、ls、lsof、last 等。
假设我正在运行一个进程,它执行了一个非常冗长的过程,将其进度打印到标准输出。有没有办法在之后自动终止进程
我目前已经将命令的输出通过管道x传输到egrep 'search pattern并希望x在egrep显示特定行后终止。
我想如果有什么方法可以编写脚本:
run command `y` after `x` lines of output are seen on previous apps piped `sdout`
Run Code Online (Sandbox Code Playgroud)
我可以很容易地把它拉下来,例如:
mylongrunningtool | egrep '(term1|term2)' | runafterxlines --lines=8 --command='killall -9 mylongrunnigtool`
Run Code Online (Sandbox Code Playgroud)
有接班人吗?