如何将 sed 用作守护进程或服务来解析传入的 JSON 字符串?
How can I use sed as a daemon or service to parse incoming JSON strings?
我正在构建一个解析引擎,它将 JSON 字符串作为输入,解析 JSON 字符串,并输出解析后的 JSON 字符串。我希望解析引擎 运行 作为守护程序或服务,因此我可以使用 Docker 部署它。它需要非常高性能,因为它将解析大量数据。
我知道我可以有一个脚本,它将 sed 作为后台进程启动。但是,启动和重新启动进程似乎会产生开销,从而降低性能。我在想 运行ning sed 作为守护进程或服务可能会让我方便地使用现有的、经过充分审查的工具,同时最大限度地提高系统性能。
此外,如果 awk 或其他现有工具更适合此目的,我愿意接受其他选择。但是,如果可能的话,我希望它成为一个经过良好审查的 Linux/Unix 工具,只是为了避免重新发明轮子。
我读到这篇 . And this one 关于 运行ning emacs 作为守护进程的内容。但是,似乎都不适用于 sed。
我也考虑过在守护进程中通过管道将 stdin 传递给 sed,但不确定这是否是最佳方法。
更新
我想问的关键是:我如何 运行 sed、awk 或 jq 作为守护进程,以便我可以将许多字符串传递给它而不会产生启动新进程的开销?
(这对于评论来说太大了)
按照我的理解,这些经典的 unix 文本处理工具如 sed
、awk
等被编写为过滤器,它们处理输入流并产生输出流。它们不是为守护进程而构建的,它们在处理输入流后终止。 EOF
在输入流上最终会终止过滤器。所以你必须 keep that pipe open.
如果您不喜欢用 shell 脚本包装工具的想法,也许是保持管道打开所需的功能,请将进程变成守护进程,然后关闭打开的文件描述符以优雅地终止进程可以在 constructor/destructor (init/fini) 的共享库中实现,该共享库可以预加载 (with LD_PRELOAD
) 而 运行 工具。
如果您选择实施类似的东西,daemonize 项目可能是一个很好的起点。
我正在构建一个解析引擎,它将 JSON 字符串作为输入,解析 JSON 字符串,并输出解析后的 JSON 字符串。我希望解析引擎 运行 作为守护程序或服务,因此我可以使用 Docker 部署它。它需要非常高性能,因为它将解析大量数据。
我知道我可以有一个脚本,它将 sed 作为后台进程启动。但是,启动和重新启动进程似乎会产生开销,从而降低性能。我在想 运行ning sed 作为守护进程或服务可能会让我方便地使用现有的、经过充分审查的工具,同时最大限度地提高系统性能。
此外,如果 awk 或其他现有工具更适合此目的,我愿意接受其他选择。但是,如果可能的话,我希望它成为一个经过良好审查的 Linux/Unix 工具,只是为了避免重新发明轮子。
我读到这篇
我也考虑过在守护进程中通过管道将 stdin 传递给 sed,但不确定这是否是最佳方法。
更新 我想问的关键是:我如何 运行 sed、awk 或 jq 作为守护进程,以便我可以将许多字符串传递给它而不会产生启动新进程的开销?
(这对于评论来说太大了)
按照我的理解,这些经典的 unix 文本处理工具如 sed
、awk
等被编写为过滤器,它们处理输入流并产生输出流。它们不是为守护进程而构建的,它们在处理输入流后终止。 EOF
在输入流上最终会终止过滤器。所以你必须 keep that pipe open.
如果您不喜欢用 shell 脚本包装工具的想法,也许是保持管道打开所需的功能,请将进程变成守护进程,然后关闭打开的文件描述符以优雅地终止进程可以在 constructor/destructor (init/fini) 的共享库中实现,该共享库可以预加载 (with LD_PRELOAD
) 而 运行 工具。
如果您选择实施类似的东西,daemonize 项目可能是一个很好的起点。