加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

如何捕获从init.d运行的linux守护进程的pid

发布时间:2020-12-14 01:48:12 所属栏目:Linux 来源:网络整理
导读:我已经通过存储rc5.d的脚本文件运行二进制文件(用C语言编写)启动了一个服务守护进程. 但我不知道如何捕获守护进程的pid并将其存储在/var/run/.pid中的pid文件中.这样我就可以使用pid进行终止. 我怎样才能做到这一点? 解决方法 尝试在init脚本中使用带-pidfi
我已经通过存储rc5.d的脚本文件运行二进制文件(用C语言编写)启动了一个服务守护进程.

但我不知道如何捕获守护进程的pid并将其存储在/var/run/.pid中的pid文件中.这样我就可以使用pid进行终止.
我怎样才能做到这一点?

解决方法

尝试在init脚本中使用带-pidfile参数的start-stop-daemon(8).让程序将其PID写入指定位置(通常在配置文件中确定).

您需要注意的是陈旧的PID文件,例如,如果锁定文件在重新启动时持续存在.该逻辑最好在init脚本本身中实现,因此start-stop-daemon的–exec选项.

例如,如果/var/run/foo.pid是1234,并且/ proc / 1234 / exe不是您的服务,则锁定文件是陈旧的,应该被安静地删除,从而允许服务正常启动.

就您的应用程序而言,只需确保lockfile的位置是可配置的,并且存在一些方法来告诉init脚本将其放在何处.

例如:(示例:/ etc / default / foo):

PIDFILE=/var/run/foo.pid
OTHEROPTION=foo

然后在/etc/init.d/foo中:

[ -f /etc/default/foo ] && . /etc/default/foo

同样,除了一致地写入文件之外,所有这些逻辑都应该在应用程序之外处理.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读