2010-12-02 5 views
0

В настоящее время я работаю над проектом, требующим выполнения нескольких процессов под управлением процесса «master», который получает удаленные команды через TCP и сообщает дочерним процессам, что делать (например: какие файлы они должны действовать, какие обработки они должны выполнять).Удаленное управление процессом в Linux

Я придумал следующие идеи для передачи команд/конфигурации вниз к дочерним процессам:

  • сигналов (не достаточно мощных)
  • Двоичного протокола над гнездами или трубами, соединяющих каждый процесс мастер (изобретать колесо).
  • RPC (возможно, избыточна)
  • CORBA (возможно, избыточна)
  • DDS (полностью избыточна)

Любые идеи/предложения?

+0

На каких языках внедрены? Использование потоков вместо процессов может быть проще. Или разделяемая память в зависимости от языка. – GinoA 2010-12-02 18:56:35

ответ

0

Как насчет текста-протокола через трубу?

текстовые протоколы всегда лучше, чем бинарные протоколы, потому что их легче тестировать, а более простое тестирование обычно означает меньшее количество ошибок.

0

Вы также можете использовать очереди сообщений или разделяемую память с помощью семафоров.

Вы также можете посмотреть проект Apache под названием ActiveMQ, который позволяет отправлять сообщения в очереди подписки и т. Д. Его очень мощный и гибкий интерфейс, и есть C-интерфейсы. Идеально, если у вас есть много машин/сетей, которым необходимо отправлять сообщения.

http://activemq.apache.org/

0

Легкие очереди сообщений, как beanstalkd или Resque кажется, правильный уровень сложности. Файлы с inotify также могут работать; inotify - это очередь событий. Вы можете попробовать его с помощью incrontab, прежде чем выпекать его. {Xml, json} -rpc (немного) более сложные, но также более стандартные, поскольку они используют http. Однако метафоре очереди сообщений является более подходящей, чем rpc для неблокирующих взаимодействий.

0

Инструмент supervisord может быть полезен. Это клиент-серверная система, которая позволяет своим пользователям контролировать и контролировать ряд процессов в UNIX-подобных операционных системах.

Смежные вопросы