Tradicionalmente, inetd (8). A maioria das distribuições do Linux empacota xinetd .
Procurando por um programa unix que seja executado em segundo plano (daemon), que:
Existe alguma coisa? Estou pedindo muito? Eu não me importaria de uma solução personalizada se isso fosse possível.
Eu examinei sistemas de enfileiramento como o rabbitmq / beanstalk / gearman. Eles não correspondem às minhas exigências, parece ...
Ty
Tradicionalmente, inetd (8). A maioria das distribuições do Linux empacota xinetd .
Não tenho certeza do que você está procurando, mas é possível criar serviços simples usando socat
para escutar em uma porta e fazer com que ele execute um script de shell, por exemplo, em cada conexão. Você pode limitar as conexões máximas simultâneas. Por exemplo, crie um script bash ./myscript
holding:
#!/bin/bash
read message
echo "hello. got $message"
sleep 10
echo "bye"
Em seguida, inicie socat
na porta 10005 com um máximo de 2 filhos para executar o script:
socat TCP4-LISTEN:10005,reuseaddr,fork,max-children=2 SYSTEM:./myscript
Agora você pode se conectar a essa porta usando qualquer ferramenta de rede desejada e interagir com o script. Usando o recurso /dev/tcp/
integrado do bash para se conectar a uma porta, o seguinte será suficiente:
(echo "$(date) my message"; cat -n >&2) <>/dev/tcp/localhost/10005 >&0 &
Se você der este comando várias vezes, apenas 2 serão executados e o restante será enfileirado. Saída típica será
1 hello. got Wed May 11 17:33:19 CEST 2016 my message
2 bye