#!/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