【问题标题】:Remote process control in LinuxLinux中的远程过程控制
【发布时间】:2011-05-19 07:46:01
【问题描述】:

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

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

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

有什么想法/建议吗?

【问题讨论】:

  • 用什么语言实现?使用线程而不是进程可能更简单。或共享内存,具体取决于语言。
  • 你也可以使用文件或en.wikipedia.org/wiki/Message_queue
  • 实现可能会使用 C++,尽管我正在考虑使用旧的好 C。
  • 感谢大家提出的所有想法,我会深入研究每一个想法,并为最终适合我的那个投上一票(很遗憾不能投上所有的答案)。

标签: linux daemons


【解决方案1】:

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      http://activemq.apache.org/

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2015-05-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-09-02
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多