如何让start-stop-daemon将子进程ID写入pid文件?

时间:2017-03-29 20:06:58

标签: bash debian sh start-stop-daemon

我正在编写一个init.d脚本来启动我用C编写的程序。该程序遵循一个非常标准的模板,它调用fork()来创建子进程,并且然后父进程几乎立即终止。我遇到的麻烦是PID文件获取写入它的父进程ID,所以稍后当我调用" stop"它失败了,因为父母已经很久才结束,只有孩子正在跑步。

目前我在启动脚本中有这个命令:

start-stop-daemon --start --background -m --oknodo --pidfile "$PIDFILE" --exec "$SCRIPT" || return 2

我承认我对这一切都很陌生,所以我甚至都不确定这些旗帜的作用。这主要是我偶然发现的各种文章的复制/粘贴。无论如何,这似乎是一件相当普遍的事情。如何让它在pid文件中写入正确的(即子)进程ID?

1 个答案:

答案 0 :(得分:0)

守护进程需要自己创建.pid文件。因为它自己的守护程序,当你改变你的开始pid。

选项--pidfile用于已创建的pid文件。 start-stop-daemon也有选项--make-pidfile,但它只适用于没有守护自己的程序。

  

-m, - make-pidfile ...   注意:此功能可能无法在所有情况下使用。最值得注意的是,正在执行的程序从其主进程中分叉。

Here您可以找到如何在守护程序中创建pid文件的示例。