问题是尾巴 -f 不会自行退出,我的脚本停滞不前。
我正在使用睡眠 15,因为在触发关闭命令字符串"org.apache.coyote.AbstractProtocol"后,日志中出现 15 秒后。通过这种方式,tail -100 工作并给出所需的结果。
下面是我编写的代码片段,它工作正常,但我想通过尾巴 -f 动态检查它。请指导我如何通过尾巴 -f 并以某种方式退出尾巴来做到这一点。
ALFRESCO_LOGS="$CATALINA_BASE/logs"
printf "Stopping alfresco instance.nn"
$CATALINA_HOME/bin/shutdown.sh &> /dev/null
sleep 15
CHECK_ALFRESCO_LOGS=$(tail -100 $ALFRESCO_LOGS/catalina.out | grep --line-buffered 'org.apache.coyote.AbstractProtocol' | awk 'NR==1{print $NF}')
echo "$CHECK_ALFRESCO_LOGS"
if [[ "$CHECK_ALFRESCO_LOGS" == "stop" ]];
then
echo "Alfresco instance has been stopped."
fi
如果你可以接受tail -f
接收SIGPIPE
,这是一个简单的方法:
while read CHECK_ALFRESCO_LOGS; do
echo "$CHECK_ALFRESCO_LOGS"
if [[ "$CHECK_ALFRESCO_LOGS" == "stop" ]]; then
echo "Alfresco instance has been stopped."
break
fi
done < <( tail -f $ALFRESCO_LOGS/catalina.out | awk '/org.apache.coyote.AbstractProtocol/{print $NF}')
当条件匹配时,while 循环结束。这将关闭输入重定向,因此tail
进程接收SIGPIPE
,从而关闭它。