【发布时间】:2015-08-04 00:51:30
【问题描述】:
我需要的是通过某种 API 来控制 Linux 守护程序的可能性,例如检查某个守护程序是否正在运行、启动/停止/重新启动它等。
是否有任何提供此功能的 Linux 库?
【问题讨论】:
我需要的是通过某种 API 来控制 Linux 守护程序的可能性,例如检查某个守护程序是否正在运行、启动/停止/重新启动它等。
是否有任何提供此功能的 Linux 库?
【问题讨论】:
您也可以使用D-Bus 或SNMP。然而,大多数守护进程只是将它们的 PID 写入/var/run/ 下的某个文件并接受SIGTERM 信号以停止,并接受SIGHUP 信号以重新加载其配置文件(通常在/etc/ 下)。
请注意,如果您采用常规约定,即您的守护程序 mydprog 将其 pid 写入 /var/run/mydprog.pid,则其他程序可以在那里读取该 pid,并使用带有 0 信号的 kill(2) 检查守护进程在跑。您还可以访问/proc/1234/ 下的一些伪文件(其中 1234 是守护进程的 pid),尤其是 /proc/1234/status,请参阅proc(5) 了解更多信息。
您还可以设计您的守护程序,以便它回答,例如在一些unix(7) 或tcp(7) 套接字上使用一些JSONRPC 协议,通过提供状态信息来进行一些查询。您可以考虑通过一些 HTTP 服务器库(如 libonion)或任何其他消息传递或远程过程调用协议使用一些 HTTP 协议。
【讨论】:
简短的回答是否定的。
一些守护进程可能有一个 api,但这将是特定于该守护进程的。
您可以运行/etc/init.d/<daemon_name> start|stop|status 来启动停止或获取大多数守护进程的状态
【讨论】: