守护进程:接收消息 -> 运行后台命令 -> 管理同时运行的任务数量?

守护进程:接收消息 -> 运行后台命令 -> 管理同时运行的任务数量?

寻找一个在后台运行的unix程序(守护进程),它:

  1. 可以接收任意(JSON)消息。
  2. 收到消息后,运行指定的命令。
  3. 可以选择限制一次可以运行的该进程的实例数量。
  4. 如果收到的消息多于 UPPERlimit,则将它们添加到队列中。

有什么东西存在吗?我的要求是不是太多了?如果可能的话,我不介意定制 bash 解决方案。

我研究过像rabbitmq/beanstalk/gearman这样的排队系统。好像不符合我的要求..

答案1

传统上,内网(8)。大多数 Linux 发行版软件包西内特

答案2

我不确定您在寻找什么,但您可以构建简单的服务来socat监听端口并让它在每个连接上运行 shell 脚本。您可以限制最大同时连接数。例如,创建一个 bash 脚本,./myscript其中包含:

#!/bin/bash
read message
echo "hello. got $message"
sleep 10
echo "bye"

然后在端口 10005 上启动socat(最多 2 个子进程)来运行脚本:

socat TCP4-LISTEN:10005,reuseaddr,fork,max-children=2 SYSTEM:./myscript

您现在可以使用您喜欢的任何网络工具连接到此端口并与脚本交互。使用 bash 的内置/dev/tcp/功能连接到端口,以下内容就足够了:

(echo "$(date) my message"; cat -n >&2) <>/dev/tcp/localhost/10005 >&0 &

如果您多次发出此命令,则只有 2 个将运行,其余的将排队。典型的输出是

1  hello. got Wed May 11 17:33:19 CEST 2016 my message
2  bye

相关内容