【发布时间】:2014-11-30 07:54:49
【问题描述】:
我有一个简单的要求,即持续监控日志文件,当其中出现某个术语时,发送一条 JMS 消息。我使用了下面的代码 (checkScript.sh),它可以完美运行,直到午夜存档脚本启动。
string="requiredstring"
tail -n 0 -f /home/user/log.log | \
while read LINE
do
echo "$LINE" | grep -q $string
java tibjmsProducer -server tcp://localhost:7222 -user admin -password admin -queue test.queue "$LINE"
done
在午夜,有一个归档脚本启动并将 log.log 文件重命名为 log.log.1 并触及 log.log 文件。所以我们最终会得到两个文件log.log 和log.log.1。由于 AIX 无法使用 tail 监视这些文件更改,因为 AIX 中的尾部仅跟踪文件描述符,因此我编写了另一个脚本,它将在归档完成后重新启动上述代码。
kill -9 `ps -ef|grep "tail -n 0 -f" | grep "checkScript"| awk '{print $2}'`
echo "Killed process. Restarting the shell script"
./checkScript.sh >> /home/user/Service.log 2>&1 &
有趣的是,它确实按预期工作。但是重新启动后,日志文件停止被监视并且没有事件被触发,但是脚本上的ps -ef 显示checkScript 正在运行尾部。
我在这里做错了吗?
谢谢!
【问题讨论】:
标签: logging monitoring aix tail continuous