Bash脚本监视日志,匹配关键字然后发送命令

Bash脚本监视日志,匹配关键字然后发送命令
#!/bin/bash
sudo tail -fn0 /home/main/time.log |
grep -o --line-buffered 'garage\|garden\|porch' | head -1 |
    while read line; do 
sudo pkill -f porch.sh &
sudo pkill -f garage.sh &
done

我正在尝试编写一个监视日志的脚本,并且在匹配关键字时,它将触发一些命令。

问题是,我拼凑起来的东西只能工作一次,然后退出并停止监视。

我在 grep 中添加了“head -1”,因为我希望它仅在第一个关键字之后执行,并防止它在日志尾部出现多个关键字时多次执行。所以,基本上,如果尾部出现多个关键字,我希望它在第一个关键字处执行,忽略其余关键字,执行列出的脚本,然后返回监视日志的尾部。

我希望脚本在匹配关键字后保持活动状态,并继续监视日志尾部以查找可能记录的任何新关键字。

非常感谢任何建议。谢谢你!

答案1

如果您希望它继续监视,我建议您使用无限循环,并且只需在 shell 中添加并休眠,以告诉他们需要经过多少时间才能再次监视,如果您使用的是 bash shell,则如下所示:

#!/bin/bash
while true
do
   sudo tail -fn0 /home/main/time.log |
   grep -o --line-buffered 'garage\|garden\|porch' | head -1 |
   while read line; do 
      sudo pkill -f porch.sh &
      sudo pkill -f garage.sh &
   done
   sleep 1 #change it for the time you want it to keep it monitoring again
done

相关内容