监视日志文件尾部的字符串,如果找不到,请退出



成千上万的人在网络上使用tail来监视日志文件中的字符串,如果他们没有找到它,就继续监视。这与我遇到的问题正好相反——我正试图从根本上节约资源,而且我不希望有一个固定的线程监视日志:我正试图设置一个cron作业,每半小时运行一次。但这意味着Bash脚本(包括tail和grep)必须监视该字符串,然后退出,不管是否找到它。这是我最好的尝试:

LOG_FILE="/var/log/syslog"
SEARCHED="fallback errored"
( tail -f -n0 "$LOG_FILE" & ) | while IFS= read -r line; do
if [ $(echo "${line}" | grep -q "${SEARCHED}") ] ; then
curl -X POST https://maker.ifttt.com/trigger/EthFail/with/key/XXXXX
touch "MonitorRanAndIamProofWhen"
fi
done
exit 0

但它只是继续运行…尝试将tail放到它自己的子进程中,并在read语句中添加-t time标志。还是坐在那里看。

如果您想查找字符串${SEARCHED},则不需要使用测试命令[ ]

( tail -f -n0 "$LOG_FILE" & ) | while IFS= read -r line; do
if $(echo "${line}" | grep -q "${SEARCHED}") ; then

那么,如果创建了以下文件,下面的命令是否意味着子进程结束?

touch "MonitorRanAndIamProofWhen"

最新更新