我已经通过在rc5.d中存储的脚本文件运行C++编写的二进制文件来启动了一个服务守护进程。
但是我不确定如何捕获守护进程的pid并将其存储在/var/run/.pid的pid文件中,以便我可以使用该pid进行终止操作。我应该怎么做呢?
start-stop-daemon(8)
和--pidfile
参数。让您的程序将其PID写入指定位置(通常在配置文件中确定)。start-stop-daemon
选项中有--exec
选项。/var/run/foo.pid
为1234
,并且/proc/1234/exe
不是您的服务,则锁定文件已过时,应静默删除,以使服务正常启动。PIDFILE=/var/run/foo.pid
OTHEROPTION=foo
那么在 /etc/init.d/foo 中:
[ -f /etc/default/foo ] && . /etc/default/foo
除了持续地向文件写入内容外,所有这些逻辑都应该在您的应用程序之外处理。
fuser
命令确定pid。