如何“tail -f”到文件,同时无限期地执行利用该文件的脚本?

如何“tail -f”到文件,同时无限期地执行利用该文件的脚本?

我非常接近得到它,但担心我花了太长时间看这个并且迷失了如何实现我想要的东西。

我正在尝试做的事情:

从我的服务器获取访问日志,解析输出并将其提供给matomo原木进口商,因此它正在“实时”导入日志。本质上,web server -> log -> parse -> matomo log importer

我做了什么:

我可以用 tail 解析 access.log 的输出杰克像这样:

tail -f /var/log/access.log | jq --compact-output '{ip: (.request.remote_addr | .[:-6]), host: .request.host, path: .request.uri, status: "\(.status)", referrer: "", user_agent: .request.headers."User-Agent"[], length: .size, generation_time_milli: .duration, date: (.ts | strftime("%Y-%m-%dT%H:%M:%S%z"))}'

这给了我JSONmatomo 日志导入器的格式明白。然后我有一个需要读取日志并导入它的脚本。

#!/bin/sh

echo "${@}" | python3 ./import_logs3.py \
 --url=https://location --token-auth={TOKEN} \
 --enable-http-errors --enable-http-redirects --enable-static --enable-bots \
 --idsite=1 --recorders=4 --log-format-name=nginx_json {FILE}

这就是我陷入困境的地方,因为脚本需要处理一个文件,并在解析它后完成。我希望脚本无限期地运行,以便日志“实时”导入。这些示例使用诸如系统日志每次日志文件更新时都会执行该脚本。

我将如何去做类似的事情?利用tee?如果我tee访问一个文件,每次更新时如何执行指向该文件的脚本?

谢谢你的帮助!

相关内容