我已经通过存储rc5.d的脚本文件运行二进制文件(用C++编写)启动了一个服务守护进程.
但我不知道如何捕获守护进程的pid并将其存储在/var/run/.pid中的pid文件中.这样我就可以使用pid进行终止.我怎样才能做到这一点?
尝试使用init脚本中start-stop-daemon(8)的--pidfile参数.让程序将其PID写入指定位置(通常在配置文件中确定).
您需要注意的是陈旧的PID文件,例如,如果锁定文件在重新启动时持续存在.该逻辑最好在init脚本本身中实现,因此--exec可以选择start-stop-daemon.
例如,如果/var/run/foo.pid是1234,并且/proc/1234/exe不是您的服务,则锁定文件是陈旧的,应该安静地删除,从而允许服务正常启动.
就您的应用程序而言,只需确保lockfile的位置是可配置的,并且存在一些方法来告诉init脚本将其放在何处.
例如:(示例:/ etc/default/foo):
PIDFILE=/var/run/foo.pid
OTHEROPTION=foo
Run Code Online (Sandbox Code Playgroud)
然后在/etc/init.d/foo中:
[ -f /etc/default/foo ] && . /etc/default/foo
Run Code Online (Sandbox Code Playgroud)
同样,除了一致地写入文件之外,所有这些逻辑都应该在应用程序之外处理.
| 归档时间: |
|
| 查看次数: |
19023 次 |
| 最近记录: |