2010-12-02 4 views
0

현재 "마스터"프로세스의 제어하에 실행되는 여러 프로세스를 필요로하는 프로젝트에서 작업하고 있습니다.이 프로세스는 TCP를 통해 원격 명령을 수신하고 하위 프로세스에게 무엇을해야하는지 알려줍니다 (예 : 어떤 파일 그들은 행동해야하며, 어떤 처리 작업을 수행해야하는지).Linux의 원격 프로세스 제어

나는 자식 프로세스에 이르기까지 명령/구성을 전달하는 데 다음과 같은 아이디어를 왔어요 : 각 프로세스에 연결 소켓이나 파이프를 통해 (충분히 강력하지 않음)

  • 이진 프로토콜

    • 신호를 마스터 (바퀴를 재발견).
    • RPC (아마도 과잉)
    • CORBA (완전히 과잉) (아마도 과잉)
    • DDS

    모든 아이디어/제안?

  • +0

    어떤 언어가 구현되고 있습니까? 프로세스 대신 스레드를 사용하는 것이 더 간단 할 수 있습니다. 또는 언어에 따라 공유 메모리. – GinoA

    +0

    파일이나 http://en.wikipedia.org/wiki/Message_queue도 사용할 수 있습니다 – Drakosha

    +0

    implepationation은 아마도 C++로되어있을 것입니다. 이전의 좋은 C로 staty를 고려하고 있지만 – cyberguijarro

    답변

    0

    어떻게 파이프를 통해 텍스트 프로토콜에 대한?

    텍스트 프로토콜은 테스트하기가 쉽고 일반적으로 테스트가 쉽기 때문에 일반적으로 바이너리 프로토콜보다 우수합니다.

    0

    메시지 대기열 또는 공유 메모리를 세마포어와 함께 사용할 수도 있습니다.

    ActiveMQ라는 아파치 프로젝트를 살펴보면 메시지를 구독 대기열 등으로 발송할 수 있습니다. 매우 강력하고 유연하며 C 인터페이스가 있습니다. 메시지를 발송해야하는 기계/네트워크가 많은 경우에 이상적입니다.

    http://activemq.apache.org/

    0

    beanstalkd 또는 resque 같은 경량 메시지 큐는 복잡 적절한 수준의처럼 보인다. inotify가있는 파일도 사용할 수 있습니다. inotify는 이벤트 대기열로 설계되었습니다. 당신은 그것을 굽기 전에 incrontab로 시도 할 수 있습니다. {xml, json} -rpc는 http를 사용하기 때문에 (다소) 더 복잡하지만 더 표준 적입니다. 그러나 비 - 블로킹 상호 작용의 경우 메시지 큐 메타포가 rpc보다 더 적합합니다.

    0

    supervisord 도구가 유용 할 수 있습니다. 이것은 사용자가 UNIX와 유사한 운영 체제에서 여러 프로세스를 모니터하고 제어 할 수있게 해주는 클라이언트/서버 시스템입니다.

    관련 문제