监控日志,匹配关键字,运行命令并继续监控

时间:2014-05-12 17:35:01

标签: linux bash embedded-linux

我不是脚本专家,还在学习但是我想在linux中创建一个监视日志文件的脚本,每行输出日志,搜索关键字,如果匹配则执行给定命令并继续监视日志文件。 我为这种行为编写了一个脚本(排序),但这会在条件满足后再次启动日志。我不想在下一次迭代中从顶部开始,我希望脚本从最后一个匹配的位置继续 这是我正在使用的脚本:

#!/bin/sh

while true ; do
    grep -q "$1" /path/to/log_file.log
    if [[ $? == 0 ]]; then
        //run my command here
    else
        printf .
        sleep 1
    fi
done

感谢任何帮助。 感谢。

2 个答案:

答案 0 :(得分:0)

bash中正确的方法:

grep "$1" /path/to/log_file.log | while read ; do
    # do whatever you need with $REPLY, for example
    echo "found match: ${REPLY}"
done

答案 1 :(得分:0)

#!/bin/sh

tail -f /path/to/log_file.log |grep "$1"
 #your execution command $output
echo $output

我认为这是最简单的方法,使用-f命令可以跟踪日志文件中的最后十行,而不是解析完整文件,也可以将脚本放在cron中并将其输出到某个文件中,这样就可以了跟踪该日志中的历史警告和关键状态。

例如,这将在2:30每天运行脚本,并在文件中输出当前系统的当前日期和主机名。

30 2 * * * /path/to/scripts.sh > /home/user/`date`_`hostname`_log