我需要的是通过某种 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
以启动停止或获取大多数守护程序的状态