gpt4 book ai didi

linux - bash脚本不退出

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:39:10 24 4
gpt4 key购买 nike

我编写了一个快速的 bash 脚本,用于监视特定字符串的日志,然后退出。除了问题是,当我执行“ps -fu $user”时,我仍然可以在脚本返回后运行脚本及其子“tail”进程。

#!/bin/bash
####### MAIN #######

FILE=$1
MSG=""
while read LOGLINE
do
if [[ "${LOGLINE}" == *"someString"* ]]; then
MSG=${LOGLINE}
break
fi
done < <(tail -f ${FILE})
pkill -P $$ tail
echo ${MSG}

我将一个不断写入的应用程序的日志文件传递给它。当我运行此脚本时,它将找到 someString 的第一个实例,将其回显到标准输出并退出。除了尾进程似乎没有被杀死,脚本本身也没有。

最佳答案

了解发生这种情况的原因很重要。

问题是用于退出循环的“break”。 break 在 if 语句中。 exit 在这里更合适,因为您想一起退出。

这部分也不是必需的,你只需要以“完成”结束

done < <(tail -f ${FILE})

你永远不会“完成”“尾部”,因为你从来没有要求过它。

因为我假设您的日志在脚本开头没有被截断,您正在拖尾获取新内容,因此您应该通过管道/或将尾部写入临时文件,然后在脚本退出时删除。要么会工作。

关于linux - bash脚本不退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44831648/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com