我寫了一個快速bash腳本,用於監視特定字符串的日誌,然後退出。除了問題是當我執行「ps -fu $ user」時,腳本返回後,仍然可以繼續運行腳本及其子「尾部」進程。bash腳本不存在
#!/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的第一個實例,將它回顯到stdout並退出。除了尾巴過程似乎沒有被殺死,劇本本身也沒有。
你最好用尾巴-f $ 1 |同時讀取LOGLINE,然後回顯$(MSG),並在條件滿足時退出而不是中斷。 –
......或者更坦白地說,因爲'SIGPIPE'上的'tail'很容易退出,所以這個無疑是倒退了。 – dhke