我不是脚本专家,还在学习但是我想在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
感谢任何帮助。 感谢。
答案 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