首页 > 解决方案 > 如何使用 sed 作为守护程序或服务来解析传入的 JSON 字符串?

问题描述

我正在构建一个解析引擎,它将 JSON 字符串作为输入,解析 JSON 字符串,并输出解析后的 JSON 字符串。我希望解析引擎作为守护程序或服务运行,因此我可以使用 Docker 部署它。它需要非常高性能,因为它会解析大量数据。

我知道我可以有一个脚本,它将 sed 作为后台进程启动。但是,似乎启动和重新启动进程会产生开销,从而降低性能。我正在考虑将 sed 作为守护程序或服务运行,这可能使我能够方便地使用现有的、经过严格审查的工具,同时最大限度地提高系统性能。

此外,如果 awk 或其他现有工具更适合此目的,我愿意接受其他选择。但是,如果可能的话,我希望它成为一个经过严格审查的 Linux/Unix 工具,以避免重新发明轮子。

我读了这个SO 问题。而这个关于将emacs作为守护进程运行。但是,两者似乎都不适用于 sed。

我还考虑过在守护进程中将标准输入管道传输到 sed,但不确定这是否是最好的方法。

更新 我要问的关键是:如何将 sed、awk 或 jq 作为守护进程运行,以便可以将许多字符串传递给它,而不会产生启动新进程的开销?

标签: parsingawkseddaemon

解决方案


(这对于评论来说太大了)

按照我的理解,这些经典的 unix 文本处理工具,如等sedawk都被编写为过滤器,它们处理输入流并产生输出流。它们不是为守护进程而构建的,它们在处理输入流后终止。EOF在输入流上最终将终止过滤器。所以你必须保持那个管道打开

如果您不喜欢使用 shell 脚本包装该工具的想法,也许可以在共享库的构造函数/析构函数 (init/fini),可以LD_PRELOAD在运行工具时预加载(使用 )。

如果您选择实现类似的东西,daemonize项目可能是一个很好的起点。


推荐阅读