如何读取动态变化的文件

use*_*079 1 linux bash

我正在尝试读取不断变化的日志文件(即文本文件),并对该文件中的某些文本生成警报.我想通过bash脚本来做到这一点,但我很困惑,一旦一些文本进入该日志文件,我将如何调用我的程序.

换句话说,我如何在该文件上一直检查,以便每当某个特定文本进入该文件时,我都会收到有关该文本的警报.任何函数调用?或者是其他东西?请指教.

bar*_*sju 5

也许这可以让你开始.试试这个test.sh脚本:

#/bin/sh

while read line
do
 echo `date` " $line"
done
Run Code Online (Sandbox Code Playgroud)

现在尝试像这样调用它(qwe是一个带有一些行的简单文本文件):

./test.sh < qwe
Run Code Online (Sandbox Code Playgroud)

它将从qwe读取行并打印它们直到EOF.

现在像这样调用它:

tail -f qwe | ./test.sh
Run Code Online (Sandbox Code Playgroud)

现在它将读取线但它不会停在EOF但等待下一行.

如果您在单独的终端中执行此操作:

`echo "hi" >> qwe`
Run Code Online (Sandbox Code Playgroud)

你看..