寻找一个在后台运行的unix程序(守护进程),它:
- 可以接收任意(JSON)消息。
- 收到消息后,运行指定的命令。
- 可以选择限制一次可以运行的该进程的实例数量。
- 如果收到的消息多于 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