【发布时间】:2015-11-28 07:30:13
【问题描述】:
有没有一种传统的方式来编写程序,以便可以从命令行向程序发出命令而无需 repl?例如,如何使用sudo /etc/init.d/nginx restart(或除restart 之外的任何其他有效命令)向正在运行的nginx 服务器发送命令
我的一个想法是让长期运行的程序创建并监视一个 unix 套接字,其他程序可以写入该套接字以向其发送命令。另一个是创建一个带有 REST 接口的本地服务器,可以通过这种方式发送命令,尽管这看起来有点粗俗。
这样做的正确方法是什么?
【问题讨论】:
-
请注意,运行程序必须配备处理消息。有很多方法可以做到这一点,但无论选择哪种方法都必须编码到正在运行的程序中。例如,没有办法让长时间运行的 shell 脚本通过尝试通信来改变其行为(除了非常粗暴地通过信号杀死它,或者通过附加调试器而不那么粗暴,但这需要特权)来自另一个进程。通常,运行程序的设计将决定您如何组织事物。
标签: sockets unix ipc unix-socket