![데몬 프로세스: 메시지 수신 -> 백그라운드 명령 실행 -> 동시에 실행되는 작업 수 관리?](https://linux55.com/image/88090/%EB%8D%B0%EB%AA%AC%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%3A%20%EB%A9%94%EC%8B%9C%EC%A7%80%20%EC%88%98%EC%8B%A0%20-%26gt%3B%20%EB%B0%B1%EA%B7%B8%EB%9D%BC%EC%9A%B4%EB%93%9C%20%EB%AA%85%EB%A0%B9%20%EC%8B%A4%ED%96%89%20-%26gt%3B%20%EB%8F%99%EC%8B%9C%EC%97%90%20%EC%8B%A4%ED%96%89%EB%90%98%EB%8A%94%20%EC%9E%91%EC%97%85%20%EC%88%98%20%EA%B4%80%EB%A6%AC%3F.png)
백그라운드에서 실행되는 다음과 같은 Unix 프로그램(데몬)을 찾으세요.
- 임의(JSON) 메시지를 수신할 수 있습니다.
- 메시지를 받은 후 지정된 명령을 실행합니다.
- 한 번에 실행할 수 있는 이 프로세스의 인스턴스 수를 선택적으로 제한할 수 있습니다.
- UPPERlimit보다 많은 메시지가 수신되면 대기열에 추가됩니다.
뭔가 존재하나요? 내가 너무 많은 것을 요구하고 있는 걸까? 가능하다면 맞춤형 bash 솔루션도 마음에 들지 않습니다.
나는 Rabbitmq/beanstalk/gearman과 같은 큐잉 시스템을 조사했습니다. 내 요구 사항에 맞지 않는 것 같습니다 ...
태국어
답변1
전통적으로,인트라넷(8). 대부분의 Linux 배포 패키지시네트.
답변2
당신이 무엇을 찾고 있는지 잘 모르겠지만 socat
포트에서 수신 대기하는 간단한 서비스를 구축하고 모든 연결에서 쉘 스크립트를 실행하도록 할 수 있습니다. 최대 동시 연결 수를 제한할 수 있습니다. 예를 들어 ./myscript
다음을 포함하는 bash 스크립트를 만듭니다 .
#!/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