Linux 向正在运行/联机的systemd守护进程传递和分析参数
我正在从C/C++编译的可执行文件创建systemd守护进程。但是,在程序运行时,我希望能够更改一些程序参数。(与Linux上的其他守护进程一样) 我的意思是,例如,通过命令行更改流程中的“destination_server_ip”变量,可能使用类似Linux 向正在运行/联机的systemd守护进程传递和分析参数,linux,process,daemon,systemd,args,Linux,Process,Daemon,Systemd,Args,我正在从C/C++编译的可执行文件创建systemd守护进程。但是,在程序运行时,我希望能够更改一些程序参数。(与Linux上的其他守护进程一样) 我的意思是,例如,通过命令行更改流程中的“destination_server_ip”变量,可能使用类似 systemctl myProgram--destp=“1::2::3::4:5” 是否有一个标准的方法/框架来实现这一点?正如Vollfeiw在他们对您的问题的评论中所建议的,您可能真的希望在应用程序中创建自己的接口来实现这一点 我真的不认为这
systemctl myProgram--destp=“1::2::3::4:5”
是否有一个标准的方法/框架来实现这一点?正如Vollfeiw在他们对您的问题的评论中所建议的,您可能真的希望在应用程序中创建自己的接口来实现这一点 我真的不认为这基本上是更新应用程序内部状态的一个好的设计选择,但是如果您非常希望能够使用
systemctl
实用程序来更新程序的状态,您可以利用的一种机制是UNIX信令
- 在您的程序中实现一个信号处理程序(实现方法因语言和框架而异,如果您不熟悉,请查找一些教程)。在UNIX上,有两个信号保留供您使用,但您认为合适—SIGUSR1和SIGUSR2。使用任何其他信号也会起作用,但会违反惯例,所以您可能不应该这样做
- 此后,您可以使用systemctl的
标志来提醒程序它应该执行某些操作--signal
- UNIX信号无法承载有效负载,因此您必须让程序知道如何以其他方式加载它想要的数据(例如,在发送信号之前写入文件)
大多数程序员会发现公开web界面更容易。我认为这是不可能的。至少在systemd中是不可能的。大多数情况下,如果对配置进行任何更改,都必须重新启动守护程序。老实说,当我知道可以在运行时更改配置时,我经常使用web界面,或者如果不能,我使用一些c我的应用程序不时检查的onfig文件。这是我一直在寻找的指南!非常感谢。