start-stop-daemon 保存了错误的 PID

start-stop-daemon 保存了错误的 PID
$ ps aux | grep svn
root      **4458** ... /usr/bin/svnserve -d -r /var/svn
manuel    4466 ... grep --color=auto svn
$ sudo kill **4458**
$ sudo rm /var/run/svnserve.pid
$ sudo start-stop-daemon --start --make-pidfile --pidfile /var/run/svnserve.pid --exec /usr/bin/svnserve -- -d -r /var/svn
$ cat /var/run/svnserve.pid
**4474**
$ ps aux | grep svn
root     **4477**  ... /usr/bin/svnserve -d -r /var/svn
manuel    4480     ... grep --color=auto svn

为什么 start-stop-daemon 保存了错误的 pid?

答案1

-d在 svnserve 中使用了标志,这意味着 svnserve 分叉,并且子进程将具有与父 svnserve 进程不同的 pid。

start-stop-daemon不知道子进程的 pid。

建议:

  • 使用pid-filesvnserve 来确定 pid 号码(并删除参数make-pidfile。)
  • 在 svnserve 中禁用分叉,并配置start-stop-daemon为也执行此操作(底部有一个例子manpage

答案2

可能是因为 svnserve 生成​​了它自己的 pidfile。

相关内容