Демон для: получения сообщений -> запуска фоновой команды -> управления количеством задач, выполняемых одновременно?

Ищу программу unix, которая работает в фоновом режиме (демон), которая:

  1. может получать произвольные сообщения (JSON).
  2. При получении сообщения выполнить указанную команду.
  3. Имеет возможность ограничить количество экземпляров этого процесса, которые могут выполняться одновременно.
  4. если получено сообщений больше, чем UPPERlimit, добавить их в очередь.

Есть ли что-нибудь? Я слишком многого прошу? Я бы не возражал против специального решения для bash, если это возможно.

Я изучал такие системы очередей, как rabbitmq / beanstalk / gearman. Кажется, они не соответствуют моим требованиям ..

Тай

0
11.05.2016, 04:02
2 ответа

Я не уверен, что вы ищете, но вы можете создавать простые службы, используя socat , чтобы прослушивать порт и получать он запускает сценарий оболочки, например, для каждого соединения. Вы можете ограничить максимальное количество одновременных подключений. Например, создайте сценарий bash ./ myscript с удержанием:

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

Затем запустите socat на порту 10005 с макс 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
0
28.01.2020, 04:51

Традиционно inetd (8). Большинство дистрибутивов Linux имеют пакет xinetd .

0
28.01.2020, 04:51

Теги

Похожие вопросы