Linux中的远程过程控制

时间:2010-12-02 18:40:48

标签: linux daemons

我目前正在开发一个项目,需要在“主”进程的控制下运行许多进程,该进程通过TCP接收远程命令并告诉子进程要做什么(例如:他们应该采取什么样的文件,他们应该执行什么样的处理操作。)

我想出了以下想法,将命令/配置传递给子进程:

  • 信号(功能不够强大)
  • 通过套接字或管道连接每个进程与主进程的二进制协议(重新发明轮子)。
  • RPC(可能是矫枉过正)
  • CORBA(也许是矫枉过正)
  • DDS(完全矫枉过正)

有任何想法/建议吗?

5 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

通过管道的文本协议怎么样?

文本协议总是比二进制协议更好,因为它们更容易测试,更容易的测试通常意味着更少的错误。

答案 2 :(得分:0)

您还可以使用消息队列或带信号量的共享内存。

您还可以查看一个名为ActiveMQ的Apache项目,该项目允许将消息分派到订阅队列等。它非常强大且灵活,并且有C接口。如果您有许多需要发送消息的机器/网络,它是理想的选择。

http://activemq.apache.org/

答案 3 :(得分:0)

像beanstalkd或resque这样的轻量级消息队列似乎是正确的复杂程度。使用inotify的文件也可以工作; inotify被设计为事件队列。您可以在使用incrontab进行烘焙之前尝试使用它。{xml,json} -rpc(稍微)更复杂,但也更标准,因为它们使用http。但是,对于非阻塞交互,消息队列隐喻比rpc更合适。

答案 4 :(得分:0)

supervisord工具可能很有用。这是一个客户端/服务器系统,允许其用户监视和控制类UNIX操作系统上的许多进程。